Reduce the branch inlining cost from 100 to 10.
[mono.git] / mono / mini / ChangeLog
1 2010-07-22  Jb Evain  <jbevain@novell.com>
2
3         * method-to-ir.c (BRANCH_COST): set to 10.
4
5 2010-07-20  Zoltan Varga  <vargaz@gmail.com>
6
7         * method-to-ir.c (op_to_op_src2_membase): Reorganize the amd64 op->op membase
8         code, it was missing a few 'break's.
9
10 2010-07-20  Zoltan Varga  <vargaz@gmail.com>
11
12         * method-to-ir.c (mini_emit_inst_for_method): Add Array.GetLength/GetLowerBound ().
13         Fixes #618176.
14
15 2010-07-16  Zoltan Varga  <vargaz@gmail.com>
16
17         * mini-arm.c: Fix the arm build by passing a MonoGenericSharingContext to get_call_info.
18
19 2010-07-16  Zoltan Varga  <vargaz@gmail.com>
20
21         * mini-llvm.c: Add more SIMD instructions.
22
23 2010-07-15  Miguel de Icaza  <miguel@novell.com>
24
25         * mini.c: Allow "casts" to be passed on MONO_DEBUG as well.
26
27 2010-07-15  Zoltan Varga  <vargaz@gmail.com>
28
29         * mini-ia64.c: Change the calling convention to pass this as first as on other
30         architectures. Remove some dead code from the get_vcall_slot() and the implementation
31         of the CALL_MEMBASE opcodes as a result.
32
33 2010-07-13  Miguel de Icaza  <miguel@novell.com>
34
35         * mini.c: LLVM is disabled by default on LLVM builds.  You can use
36         the MONO_ENV_OPTIONS to set the --llvm flag.
37
38 2010-07-13  Atsushi Enomoto  <atsushi@ximian.com>
39
40         * driver.c : windows build fix for --with-moonlight.
41
42 2010-07-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
43
44         * mini.c|h:
45         * mini-exceptions.c: Add an option to MONO_DEBUG for tracking down exceptions
46         that reach native code from a reverse pinvoke.
47
48 2010-07-11  Zoltan Varga  <vargaz@gmail.com>
49
50         * method-to-ir.c (mono_method_to_ir): Kill some duplicated code.
51
52         * mini-<ARCH>.c (get_call_info): Call mini_type_get_underlying_type () before passing
53         a type to MONO_TYPE_IS_REFERENCE (), since the latter can't handle VAR/MVAR.
54         Fixes #620864.
55
56         * generics.cs: Add a test.
57
58 2010-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
59
60         * mini.c (mono_jit_compile_method_inner): Don't bomb out if we don't
61         support a given runtime implemented method.
62
63 2010-07-10  Mark Probst  <mark.probst@gmail.com>
64
65         * mini-darwin.c: Register the exception thread with the GC.
66
67 2010-07-10  Zoltan Varga  <vargaz@gmail.com>
68
69         * mini-llvm.c (set_metadata_flag): Set metadata flags only when using the LLVM
70         mono branch.
71
72 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
73
74         * mini.h (MONO_INST_HAS_CONSTANT_LOAD): New instruction flag marking loads which load
75         from constant memory.
76
77         * ir-emit.h: Clean up the _FAULT macros a bit.
78
79         * decompose.c: Mark some loads as constant.
80
81         * mini-llvm.c: Pass the constant-ness of loads to LLVM using custom metadata.
82
83 2010-07-09  Miguel de Icaza  <miguel@novell.com>
84
85         * driver.c (mini_usage): Change the name of the --sgen flag to be
86         --gc=sgen and also support --gc=boehm.   These flags can also be
87         set on MONO_ENV_OPTIONS to propagate this to children processes.
88
89         * main.c: Remove the MONO_VM_OPTIONS environment variable that
90         only supported "sgen" and "llvm" config options and instead parse
91         the MONO_ENV_OPTIONS as options that are parsed by the command
92         line parser.   Any command line option that Mono supports can be
93         passed in this environment variable.
94
95 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
96
97         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks +
98         LLVM.
99
100         * mini.c (mini_method_compile): Run abcrem uncoditionally when LLVM is used since
101         it can now eliminate more than just bounds checks.
102
103         * ir-emit.h: Add MAY_FAULT versions of the LOAD_MEMBASE macros which take
104         an extra 'fault' argument.
105
106         * method-to-ir.c: Set the MONO_INST_FAULT of the array opcodes which are decomposed
107         later.
108
109         * decompose.c: Propagate the MONO_INST_FAULT flag from the array opcodes to their
110         decomposition.
111
112         * mini-llvm.c: Remove support for the X86/AMD64 COMPARE_MEMBASE opcodes, they are
113         no longer generated when LLVM is used.
114
115         * abcremoval.c: Eliminate MONO_INST_FAULT flags if possible.
116
117 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
118
119         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks + LLVM.
120
121 2010-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
122
123         * driver.c: Moonlight: Force line buffering for stdout.
124
125 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
126
127         * mini-llvm.c (emit_load): Revert the last changes, the load/store intrinsics
128         are only callable using invoke.
129
130 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
131
132         * mini-llvm.c (process_bb): Use emit_load () in one more place.
133
134         * mini-llvm-cpp.cpp (force_pass_linking): Link in more function passes so
135         MONO_LLVM=xxx is actually usable.
136
137         * mini-llvm.c (emit_load): Use the mono specific load intrinsics even outside clauses
138         since LLVM might be able to hoist them out of loops.
139         (emit_store): Ditto.
140
141 2010-07-08  Neale Ferguson <neale@sinenomine.net>
142
143         * mini-s390x.c: Correct setting value of header from cfg->header - fix crash
144         in typeload-unaligned test.
145
146 2010-07-08  Zoltan Varga  <vargaz@gmail.com>
147
148         * xdebug.c (mono_save_trampoline_xdebug_info): Make this receive a MonoTrampInfo.
149
150         * tramp-<ARCH>.c: Move the calls to save_trampoline_xdebug_info () into
151         mini-trampolines.c/mini-exceptions.c. Use a more human readable name for
152         generic trampolines+rgctx fetch trampolines.
153
154 2010-07-08  Geoff Norton  <gnorton@novell.com>
155
156         * genmdesc.pl: nacl is not a new inst slot, it just modifies the size slot.
157
158 2010-07-07  Zoltan Varga  <vargaz@gmail.com>
159
160         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Add xdebug info.
161
162         * method-to-ir.c (emit_imt_argument): Call add_outarg_reg even if MONO_ARCH_IMT_REG
163         is not defined in the LLVM case to keep the imt arg alive.
164
165 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
166
167         * exceptions-<ARCH>.c mini-llvm.c: Clean up the naming of the llvm related trampoline
168         functions, now its 'llvm_<FOO>_trampoline'.
169
170         * method-to-ir.c (emit_imt_argument): Fix llvm support.
171
172         * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
173         cannot be passed in the same call.
174
175         * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
176         register to be the same as the RGCTX register, the two can't be used together on
177         the same call.
178
179 2010-07-05  Miguel de Icaza  <miguel@novell.com>
180
181         * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
182         that allows the user to force the VM to use llvm or sgen.
183
184 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
185
186         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
187         before processing the exception on PPC too.
188
189         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
190
191         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
192         'this' is always passed as the first argument, before the vtype ret arg. This
193         simplifies get_this_arg_reg () and LLVM integration.
194
195 2010-07-05  Martin Baulig  <martin@ximian.com>
196
197         * exceptions-x86.c (mono_arch_handle_exception): Port this to
198         Windows; apply my patch from r159782 in the mono-2-6 branch.
199
200 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
201
202         * Makefile.am: Don't build the debug assembler files if we're building without
203         debugger support.
204
205 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
206
207         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
208
209 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
210
211         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
212         length.
213
214         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
215         regs [ARMREG_FP] instead.
216
217         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
218
219         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
220         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
221
222         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
223
224         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
225
226         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
227
228         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
229         without IMT_REG defined (ARM).
230
231         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
232         the trampolines.
233
234 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
235
236         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
237
238 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
239
240         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
241         definitions to match their declarations and vice-versa.
242
243 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
244
245         * Makefile.am (common_sources): Add mini-llvm.h.
246
247         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
248
249 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
250
251         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
252         compiling.
253
254 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
255
256         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
257         implemt the option of loading the llvm backend from a module so
258         that we can have a single binary and the bloat from llvm is
259         only experienced when it is actually loaded.
260
261 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
262
263         * mini-llvm.c: remove direct access to mono_defaults.
264
265 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
266
267         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
268         a no-op.
269
270         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
271
272         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
273         is now mono_arch_nullify_class_init_trampoline ().
274         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
275         opcodes, they are no longer needed.
276
277         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
278         now mono_arch_nullify_class_init_trampoline ().
279         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
280         opcodes, they are no longer needed.
281
282         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
283         vtable on platforms which support it.
284
285         * driver.c: Print the full LLVM version we are compiled against in --version.
286
287         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
288         a bit better. Decode nesting information to fix eh support for llvm+aot.
289
290         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
291         methods.
292
293         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
294
295         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
296         is always passed as the first argument, before the vtype ret arg. This simplifies
297         get_this_arg_reg () and LLVM integration.
298
299 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
300
301         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
302         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
303         most of the vcall specific code to mono_vcall_trampoline () from
304         common_call_trampoline ().
305
306 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
307
308         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
309         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
310         if the callsite is patched.
311
312         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
313         the llvm branch.
314
315         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
316         the trampoline in the xdebug info.
317
318         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
319         as well.
320
321 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
322
323         * mini-llvm.c: Fix a few problems exposed by make check.
324
325 2010-06-25  Mark Probst  <mark.probst@gmail.com>
326
327         * mini-trampolines.c (common_call_trampoline): An ugly hack to
328         work around a potentially very hard to fix problem with inflating
329         generic methods.
330
331 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
332
333         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
334         problem has been fixes.
335
336 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
337
338         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
339
340         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
341         It might be be better to define a MonoGCJitOptions structure later and have the
342         GC return that.
343
344         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
345
346         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
347
348         * debugger-agent.c (get_objref): Implement support for sgen.
349
350         * driver.c: Remove the unused gc_wrapper.h include.
351
352         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
353         implementation.
354
355 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
356
357         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
358
359         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
360         in MonoCompile.
361
362         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
363         instead.
364
365 2010-06-23  Miguel de Icaza  <miguel@novell.com>
366
367         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
368         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
369
370         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
371         it only for Boehm diagnostics.
372
373         * Makefile.am: Make the file a bit more consistent.
374
375         * debug-debugger.c: Wrap the entire file with an #ifdef
376         MONO_DEBUGGER_SUPPORTED to simplify the build.
377
378         * Makefile.am: Fix the opcodes build issue by including the
379         source, not by including the .lo file directly
380
381         Always bring the MDB sources into the build, to drop the
382         dependency on the AM_CONDITIONAL from configure.in as the hard
383         debugger supports Boehm, but not Sgen, this simplifies the build. 
384
385         * Renamed the *.s files into *.S
386
387 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
388
389         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
390         wb for now on 64bits systems while issues with valuetype returns
391         are not fixed.
392
393 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
394
395         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
396         passes by calling createStandardFunctionPasses ().
397
398 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
399
400         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
401
402 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
403
404         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
405         MONO_INST_FAULT.
406
407         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
408         allow better optimization if the OP_LDADDR which caused the flag to be set was
409         optimized away.
410
411         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
412
413         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
414         the type token.
415
416         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
417
418         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
419
420 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
421
422         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
423         to handle the code sequence generated for non-near calls. Fixes #616056.
424
425 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
426
427         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
428
429         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
430
431         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
432         nesting clause too.
433         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
434         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
435         trampoline which saves the context, so changes made to callee saved registers in
436         finally clauses are visible to a nesting catch clause.
437
438         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
439
440         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
441         in LLVM compiled code.
442         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
443         the finally handler has ran.
444
445         * mini.h (ResumeState): New structure containing information required to resume
446         exception handling after executing LLVM compiled finally clauses.
447
448         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
449         bit, by passing all the registers as one argument.
450
451 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
452
453         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
454         to avoid an assert.
455
456 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
457
458         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
459
460         * aot-compiler.c aot-runtime.c: Fix LLVM support.
461
462         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
463         pad, branch to a new bblock instead.
464
465         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
466         orig_method.
467
468         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
469
470         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
471
472 2010-06-17  Geoff Norton  <gnorton@novell.com>
473
474         * mini-arm.h:
475         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
476         can be used by sgen.
477
478 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
479
480         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
481
482         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
483         fails.
484
485         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
486         the ip done by throw_exception (), it is not needed for corlib exceptions.
487
488 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
489
490         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
491         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
492         of size > 5 words. This support fast barriers for value types up to
493         256/512 bytes which     beyond that the copying itself is the major issue.
494
495         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
496         for gsharing, so use it.
497
498         This eliminate all calls to mono_value_copy from managed code in
499         gmcs, fsharp and ipy.
500
501         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
502
503         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
504         performance kept
505
506         * mini.c (mini_init): Register new icall.
507
508 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
509
510         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
511         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
512
513 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
514
515         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
516         value types as the overhead is huge. Manually expand it up to 5 words to
517         avoid code bloat.
518
519         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
520         is an exception that performance is dominated by mono_value_copy.
521
522         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
523
524 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
525
526         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
527         trampolines on x86, since those have their own cconv.
528
529         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
530         exception trampolines.
531
532         * tramp-x86.c: Add xdebug info for a few trampolines.
533
534         * mini-llvm.c: Set the name of the arguments.
535
536         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
537         using a block address if using the LLVM mono branch.
538
539         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
540         trampolines.
541
542 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
543
544         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
545
546         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
547
548         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
549
550         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
551
552         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
553         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
554         to identify the vtable slot address plus the method which needs to be compiled.
555
556         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
557         using llvm.
558
559         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
560         'this' is always passed as the first argument, before the vtype ret arg. This
561         simplifies get_this_arg_reg () and LLVM integration.
562
563         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
564         the latest changes.
565
566         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
567         these trampolines.
568
569         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
570
571         * mini-llvm.c: Fix compilation with llvm 2.6.
572
573         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
574
575         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
576         defined.
577
578         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
579         is always passed as the first argument, before the vtype ret arg. This simplifies
580         get_this_arg_reg () and LLVM integration.
581
582 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
583
584         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
585
586         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
587         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
588         translate into much nicer code.
589
590 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
591
592         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
593         parameter index information. Use this to simplify a lot of code.
594
595         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
596
597 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
598
599         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
600         to fix infinite generic recursion. Fixes #612702.
601
602 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
603
604         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
605         imt trampoline per imt slot when using LLVM.
606
607 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
608
609         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
610
611 2010-06-09  Levi Bard  <levi@unity3d.com>
612
613         * debugger-agent.c: Clear unloaded types on appdomain unload.
614
615 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
616
617         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
618         Fixes #612206.
619
620         * exceptions.cs: Add a test.
621
622 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
623
624         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
625
626         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
627
628         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
629         so it doesn't have to do it.
630
631         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
632         process does not mix with ours.
633
634         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
635         ones.
636
637         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
638         loads/stores which can throw exceptions inside clauses.
639
640 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
641
642         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
643         one ENDFINALLY.
644
645         * mini.c (mini_init): Register mono_resume_unwind as an icall.
646
647 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
648
649         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
650
651         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
652         locals.
653
654 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
655
656         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
657         appdomain.
658
659 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
660
661         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
662         Use a separate generic class init trampoline for llvm, since it needs a different
663         signature.
664
665         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
666         includes the location of this/rgctx.
667
668         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
669         branch.
670
671 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
672
673         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
674
675         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
676         clause.
677
678 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
679
680         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
681         says so.
682
683         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
684
685         * aot-compiler.c (patch_to_string): New debugging helper function.
686
687 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
688
689         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
690         trampoline.
691
692         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
693
694         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
695
696         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
697
698         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
699         clauses.
700
701         * mini.c (create_jit_info): Print EH clause info for LLVM too.
702
703 2010-05-28  Mark Probst  <mark.probst@gmail.com>
704
705         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
706         cpobj with reference types.
707
708 2010-05-28  Mark Probst  <mark.probst@gmail.com>
709
710         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
711         write barrier for reference types.
712
713 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
714
715         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
716         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
717
718 2010-05-31  Martin Baulig  <martin@ximian.com>
719
720         Fix #608271.
721
722         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
723         clear_breakpoint() on all breakpoint events and remove them from the list.
724
725 2010-05-27  Martin Baulig  <martin@ximian.com>
726
727         Fix #605698.
728
729         * debugger-agent.c (method_commands, type_commands): Temporarily
730         set the appdomain while executing this method; do all metadata
731         calls in the debuggee's appdomain where user assemblies are loaded.
732
733 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
734
735         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
736
737 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
738
739         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
740
741 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
742
743         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
744         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
745         be referenced even after the header is freed.
746
747         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
748         section.
749
750 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
751
752 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
753
754         * genmdesc.c (main): Fixing the detection of the nacl switch.
755
756         Code is contributed under MIT/X11 license.
757
758 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
759
760         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
761
762         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
763
764         * mini.h (LLVM_CHECK_VERSION): New helper macro.
765
766 2010-05-25  Miguel de Icaza  <miguel@novell.com>
767
768         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
769         the Perl program
770
771         * genmdesc.c: Added support for nacl: key on the machine
772         description files to support the extra space required by Google
773         Native Client.
774
775 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
776
777         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
778
779 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
780
781         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
782         mono_runtime_class_init_full ().
783         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
784
785 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
786
787         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
788
789 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
790
791         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
792         two are not the same on ilp32.
793
794 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
795
796         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
797         added by mistake.
798
799         * mini-ppc.c: Fix the DISABLE_JIT build.
800
801 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
802
803         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
804         (make_writable): Remove this unused function.
805
806 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
807
808         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
809         structure. Make the labels to plt entries local symbols instead of assembler local
810         labels, since tha latter causes problems for the iphone linker.
811
812 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
813
814         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
815
816 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
817
818         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
819         (ppc_patch_full): Ditto.
820
821         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
822
823         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
824         if gshared is enabled, to avoid asserts in the trampoline code.
825
826         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
827         on ia64.
828
829 2010-05-15  Geoff Norton  <gnorton@novell.com>
830
831         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
832         xdebug mode.
833
834 2010-05-14  Geoff Norton  <gnorton@novell.com>
835
836         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
837         misaligned stack on darwin.
838
839 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
840
841         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
842         arm.
843
844 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
845
846         * xdebug.c: Fix ARM support.
847
848 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
849
850         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
851         and do most of the work on the normal stack.
852         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
853
854 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
855
856         * aot-compiler.c: Put non-code data into the .rodata section on linux.
857
858 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
859
860         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
861
862 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
863
864         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
865         and do most of the work on the normal stack.
866
867 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
868
869         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
870         and do most of the work on the normal stack even if sigaltstack is disabled.
871
872 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
873
874         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
875         UCONTEXT_REG_ constants are available on linux as well.
876         (mono_arch_monoctx_to_sigctx): Ditto.
877         (mono_arch_ip_from_context): Ditto.
878
879 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
880
881         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
882         other domains.
883
884 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
885
886         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
887         no longer needed.
888
889 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
890
891         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
892         if a breakpoint cannot be inserted.
893
894 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
895
896         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
897
898 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
899
900         * debugger-agent.c (frame_commands): Return an error instead of asserting if
901         no JIT info is found for the method.
902
903 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
904
905         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
906         in debug printf.
907
908 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
909
910         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
911         a list of arch specific trampolines.
912
913         * aot-compiler.c (emit_trampolines): Use it.
914
915 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
916
917         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
918         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
919         get rid of the _full from their name.
920
921 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
922
923         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
924         get_nullified_class_init_trampoline to remove some code duplication.
925
926 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
927
928         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
929         attach.
930
931 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
932
933         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
934
935         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
936
937         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
938         there is no need to jump through the first plt entry.
939
940         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
941
942         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
943         arch-specific function.
944         (mono_aot_get_plt_info_offset): Ditto.
945
946         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
947         mono_arch_init () to register jit icalls called from full-aot trampolines.
948         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
949         to mini-<ARCH>.c.
950
951         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
952         the specialized throw corlib exception trampoline, use a variant of the normal
953         trampoline along with a new C function which does the call to
954         mono_exception_from_token (), just like on x86.
955
956 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
957
958         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
959         Reorganize the full aot trampoline creation functions, instead of taking a bunch
960         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
961         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
962         creation functions on architectures which have the full-aot ones.
963
964 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
965
966         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
967
968 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
969
970         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
971         explicitly, this seems to be required by some gcc versions at -O2.
972
973         * mini-arm.c: Ditto.
974
975 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
976
977         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
978         has_target delegate invokes.
979
980 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
981
982         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
983         info fields.
984
985         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
986         add patches/unwind info arguments, move to mini.c.
987
988         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
989
990 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
991
992         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
993         command which returns full path names.
994
995 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
996
997         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
998         code_size output variable.
999
1000         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
1001         mono_get_lmf_addr.
1002         
1003 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1004
1005         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
1006         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
1007         (mono_arch_cpu_enumerate_simd_versions): Ditto.
1008
1009 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1010
1011         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
1012         apple assembler.
1013
1014 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1015
1016         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
1017
1018 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1019
1020         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
1021
1022 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
1023
1024         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
1025
1026 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1027
1028         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
1029         line number support works with eglib.
1030
1031 2010-04-27  Miguel de Icaza  <miguel@novell.com>
1032
1033         * driver.c, mini.c: Since linking with LLVM makes the default Mono
1034         dirty an extra 70kb pages on startup we are now going to choose a
1035         different strategy: ship mono and mono-llvm binaries, with the
1036         second being the one that links with LLVM and defaults to LLVM
1037         being enabled.
1038
1039 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1040
1041         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
1042         Implement full-aot support on x86.
1043
1044         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
1045         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
1046         the first register returned by get_global_int_regs ().
1047
1048         * cpu-x86.md: Fix the length of insertx_u1_slow.
1049
1050         * iltests.il.in: Disable tail call tests when running with full-aot.
1051
1052 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
1053
1054         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
1055
1056 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1057
1058         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
1059         in the initializer, because it's non-constant.
1060
1061 2010-04-23  Miguel de Icaza  <miguel@novell.com>
1062
1063         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
1064         of LLVM on by default.   Used for buildbots and other setups.
1065
1066 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
1067
1068         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
1069
1070 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
1071
1072         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
1073         initonly static fields when using moving GC.
1074
1075         Contributed under MIT/X11 license.
1076
1077 2010-04-23  Geoff Norton  <gnorton@novell.com>
1078
1079         * mini-amd64.h: Darwin x86_64 support.
1080
1081 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
1082
1083         * exceptions-arm.c: Remove platform checks in favor of configure checks.
1084
1085 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
1086
1087         * exceptions-arm.c: Add Android support for sigcontext structure.
1088
1089 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1090
1091         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
1092         wrappers correctly now that their wrapper info is NULL.
1093
1094 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1095
1096         * mini.c (mono_jit_compile_method_inner): Avoid calling
1097         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
1098
1099 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1100
1101         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
1102         so the latter can be #ifndef DISABLE_JIT-ed.
1103
1104         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
1105
1106 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1107
1108         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
1109
1110 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1111
1112         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
1113         stack.
1114
1115 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
1116
1117         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
1118         calling mono_class_num_methods (). Fixes #592244.
1119
1120 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1121
1122         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
1123
1124         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
1125
1126 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1127
1128         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
1129         version.
1130         * (handle_alloc): Ditto.
1131         (mono_method_to_ir): Remove the constrained call restriction added by a previous
1132         change, its not needed anymore.
1133
1134 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
1135
1136         * mini-posix.c (sigusr1_signal_handler): Fix build on
1137         non x86/amd64 systems.
1138
1139 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1140
1141         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
1142         calls where the constrained class needs a context. Fixes #595863.
1143
1144         * iltests.il.in: Add a test.
1145
1146 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1147
1148         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
1149         2.6/SVN seems to have broken support for them.
1150
1151 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1152
1153         * mini-llvm.c: Fix support for LLVM 2.6.
1154
1155 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
1156
1157         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
1158         MonoInternalThread belonging to the thread.
1159
1160 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
1161
1162         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
1163         unsafe optimization that will remove bound checks.
1164
1165 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
1166
1167         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
1168         CompareExchange not to be inlined for I8.
1169
1170         Contributed under MIT/X11 license.
1171
1172 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1173
1174         * array.cs: Add tests for cast between primitive array types.
1175
1176 2010-04-07 Andreia Gaita  <avidigal@novell.com>
1177
1178         * Makefile.am: create a convenience library for moon to link with
1179
1180 2010-04-07 Paolo Molaro <lupus@ximian.com>
1181
1182         * method-to-ir.c: optimize array accesses from generic interfaces.
1183
1184 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1185
1186         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1187
1188 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1189
1190         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1191         of marshalbyref classes.
1192
1193         Fixes #515884.
1194
1195 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1196
1197         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1198         information.
1199
1200         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1201         information.
1202
1203         * mini.h: Increase AOT version.
1204
1205 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1206
1207         * mini-x86.h: Only enable soft debugger when using sigaction or on
1208         Windows. Fixes build on Haiku (lacks siginfo_t).
1209
1210         Code is contributed under MIT/X11 license.
1211
1212 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1213
1214         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1215         BeOS-style signal handlers.
1216
1217         Code is contributed under MIT/X11 license.
1218         
1219 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1220
1221         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1222
1223 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1224
1225         * mini-exceptions.c: Fix win32 build.
1226
1227 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1228
1229         * mini.c, driver.c: Call mono_gc_base_init() before
1230         mono_debug_init().
1231
1232 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1233
1234         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1235         call_method]): Delegate the actual work in security-core-clr.c
1236         to ease code sharing.
1237
1238 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1239
1240         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1241         float conv.ovf.un opcodes are encountered, instead of asserting later.
1242         Fixes #566296.
1243
1244 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1245
1246         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1247
1248         * iltests.il.in: Add a test.
1249
1250 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1251
1252         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1253         large. Fixes #567040.
1254
1255         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1256
1257 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1258
1259         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1260         #592711.
1261
1262 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1263
1264         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1265         mono_create_handler_block_trampoline with the proper #ifdef so that it
1266         compiles on amd64.
1267
1268 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1269
1270         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1271         allows to select if it's new or old context that is passed to 
1272         the callback.
1273
1274         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1275         case when executing a guarded handler from the EH machinery.
1276
1277         * mini-exceptions.c (mono_install_handler_block_guard): New function
1278         responsible for checking for handler blocks, installing the guard and
1279         clearing abort state.
1280
1281         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1282         to check for handler blocks and skip interruption logic if one was found.
1283
1284         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1285         by the handler block guard trampoline. Resumes interruption by raising the
1286         pending ThreadAbortException.
1287
1288         * mini.c (create_jit_info): Calculate the end address of a finally block.
1289
1290         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1291         of a finally block to a specified address and return the old one.
1292
1293         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1294         trampoline patches the original return address and calls the trampoline function.
1295
1296 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1297
1298         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1299
1300         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1301         does the patching if the callee is in the same domain.
1302
1303         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1304         of mono_arch_patch_plt_entry ().
1305
1306 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1307
1308         * mini.c (create_jit_info): Fix try block hole length encoding.
1309
1310 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1311
1312         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1313         duplicate information and print offsets instead of absolute addresses.
1314
1315 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1316
1317         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1318         event is sent. Fixes #591733.
1319
1320 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1321
1322         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1323         OpenBSD.
1324
1325 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1326
1327         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1328         thread_to_tls hash table.
1329
1330         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1331         section. Fixes #591000.
1332
1333 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1334
1335         * Makefile.am (version.h): Check for pure .git directory only,
1336         fixes SVN revision when using git without git-svn.
1337
1338         Contributed under MIT/X11 license.
1339
1340 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1341
1342         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1343
1344 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1345
1346         * basic-simd.cs: Test for vector x scalar binary operators.
1347
1348 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1349
1350         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1351         intrinsics with expanded scalar arguments.
1352
1353 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1354
1355         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1356         don't have an exception class, so don't decode it. This would crash
1357         with filter clauses.
1358
1359 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1360
1361         Make sure that trunk builds with DISABLE_JIT, an update to the
1362         PlayStation 3 port.
1363         
1364         * mini.c (mini_get_shared_method): this code seems to be necessary
1365         regardless of whether DISABLE_JIT has been defined.
1366
1367         (mono_jit_compile_method_inner): it seems that this method is
1368         required even in full AOT mode, so ifdef out only the pieces that
1369         try to genrate code (the body of code that applies patches to the
1370         code).  
1371
1372         (mini_method_compile): do not compile when using DISABLE_JIT.
1373
1374         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1375         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1376         compile when DISABLE_JIT is set.
1377
1378 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1379
1380         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1381         arch really supports it.
1382
1383 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1384
1385         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1386
1387 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1388
1389         * exceptions-s390x.c: Add support for
1390         mono_arch_get_throw_corlib_exception and fix throw by name.
1391
1392         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1393         logic (especially for varargs); Correct localloc sizing; Add
1394         mono_arch_get_this_arg_from_call and
1395         mono_arch_get_this_arg_from_call.
1396
1397         * mini-s390x.h: Add support for facility list extraction;
1398         Correct/update MONO_ARCH_xxx settings.
1399
1400         * mini-s390.c: Minor corrections to instruction output for
1401         varargs. No IMT implementation - I think it's time to deprecate
1402         s390 and just leave s390x.
1403
1404         * tramp-s390x.c: Correct creation of trampoline instruction
1405
1406
1407         * cpu-s390x.md: Update some instruction lengths
1408
1409 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1410
1411         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1412         can be hit with partial sharing.
1413
1414         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1415         in non-shared classes correctly.
1416         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1417         Turn on partial sharing.
1418
1419 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1420
1421         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1422         by mistake.
1423
1424 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1425
1426         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1427         mono_method_signature ().
1428
1429         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1430
1431         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1432         error checking, so later calls do not need error checking.
1433
1434 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1435
1436         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1437
1438         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1439
1440 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1441
1442         * mini-exceptions.c (mono_handle_exception_internal): Don't
1443         check try_end for archs different than s390. 
1444
1445         * mini.c (create_jit_info): Don't crash if the finallt block is the
1446         last one.
1447
1448 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1449
1450         * driver.c (mono_main): Don't free global codeman under linux since
1451         glic now peeks at code on stack for more archs than just amd64.
1452
1453 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1454
1455         * mini.c, method-to-ir.c: changes to support compressed interface
1456         bitmaps.
1457
1458 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1459
1460         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1461         Use sigaction on OpenBSD too.
1462
1463 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1464
1465         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1466
1467 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1468
1469         * debugger-agent.c: #include sys/select.h for fd_set.
1470
1471         Code is contributed under MIT/X11 license.
1472
1473 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1474
1475         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1476         (openbsd+amd64 ?).
1477
1478 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1479
1480         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1481         some large methods with lots of exception handlers. Fixes #440924.
1482
1483 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1484
1485         * method-to-ir.c: remove code duplication for interface checks.
1486
1487 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1488
1489         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1490         (assembly_unload): Clear all event requests referencing the to-be unloaded
1491         assembly.
1492
1493
1494 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1495
1496         * mini.h, mini-exceptions.c: restore the state of the stack
1497         guard page permissions.
1498
1499 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1500
1501         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1502         call site patching code, it doesn't appear to be needed.
1503
1504 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1505
1506         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1507         sharing generic methods whose type arguments are a mix of reference and
1508         non-reference types. Not yet turned on.
1509
1510         * mini.c (mini_get_shared_method): New helper function to return
1511         the method which will be compiled/registered in the JIT tables when doing
1512         generic sharing.
1513         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1514         use mini_get_shared_method ().
1515
1516         * mini.c (mini_method_compile): Register the same method which is compiled when
1517         doing generic sharing.
1518
1519         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1520
1521         * generics.cs: Add partial sharing tests.
1522
1523 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1524
1525         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1526                    Add an enum value that or's all possable values together. Add an enum value
1527                    that marks the end of the used bit indexes.
1528
1529         * mini-amd64.c : Make changes to match the changes in mini.h 
1530
1531         * mini-x86.c : Make changes to match the changes in mini.h
1532
1533         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1534                    simd_version to support more simd versions. Changed the name of
1535                    simd_version to simd_version_flags to make it more intuitive that
1536                    it now contains bit flags. Reordered the *_intrinsics arrays to
1537                    match the changes above. Changed emit_intrinsics() to use the new
1538                    setup mentioned above.
1539
1540         Code is contributed under MIT/X11 license.
1541
1542 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1543
1544         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1545         remaining archs. Alpha and hppa maintainers, please stand up.
1546
1547 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1548
1549         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1550         is needed even when fail_tramp!=NULL.
1551
1552 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1553
1554         * debugger-agent.c (insert_breakpoint): Write a log message.
1555
1556 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1557
1558         * iltests.il.in: Add a few tests for LEAVE going over multiple
1559         finally clauses.
1560
1561 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1562
1563          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1564
1565 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1566
1567         * mini.h (MonoBasicBlock): Add native_length field.
1568         * mini.h (MonoCompile): Add try_block_holes field.
1569         * mini.h (MonoInst): Add exception_clause pointer to
1570         the data union.
1571
1572         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1573         * mini.c (mono_cfg_add_try_hole): New function to register possible
1574         holes in try blocks.
1575         * mini.c (create_jit_info): Fill in the holes information.
1576
1577         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1578         by a try block.
1579
1580         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1581
1582 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1583
1584         * jit-icalls.c: adjusted for the array API changes.
1585
1586 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1587
1588         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1589
1590 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1591
1592         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1593         the 'pending' flag. This fixes support for appdomains too.
1594
1595
1596 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1597
1598         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1599
1600 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1601
1602         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1603         when using LLVM, LLVM generates it itself when needed.
1604
1605         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1606
1607         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1608         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1609         OP_ANDNPS/OP_ANDNPD.
1610
1611 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1612
1613         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1614         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1615         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1616
1617 2010-03-11  Martin Baulig  <martin@ximian.com>
1618
1619         * debugger-agent.c (type_commands): Add NULL check to
1620         `CMD_TYPE_GET_SOURCE_FILES'.
1621
1622 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1623
1624         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1625
1626 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1627
1628         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1629         #586664.
1630
1631         * iltests.il.in: Add a test.
1632
1633 2010-03-05  Martin Baulig  <martin@ximian.com>
1634
1635         Add support for aborting invocations.
1636
1637         * debugger-agent.c
1638         (InvokeData): Added `InvokeData *last_invoke'.
1639         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1640         added a new `invoke' field to keep the `InvokeData *' throughout
1641         the invocation.
1642         (ErrorCode): Added `ERR_NO_INVOCATION'.
1643         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1644         (mono_debugger_agent_handle_exception): Don't report any exception
1645         if an abort was requested.
1646         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1647         a thread abort if necessary.
1648         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1649
1650 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1651
1652         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1653         so we can release the whole list and not just the first one. Free
1654         it in more places as well.
1655
1656 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1657
1658         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1659
1660 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1661
1662         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1663
1664 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1665
1666         * driver.c: report also other misc build options.
1667
1668 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1669
1670         * method-to-ir.c: Generate better code for the NewObject
1671         intrinsic.
1672         
1673 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1674
1675         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1676         is disabled. Fixes #582322.
1677
1678         * iltests.il.in: Add a test.
1679
1680 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1681
1682         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1683         the handling of obj->synchronization == null and owner != current thread to
1684         mono_monitor_exit ().
1685
1686         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1687
1688
1689 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1690
1691         * mini.c: change the way emulated opcode info is stored and save about
1692         4 KB of runtime memory.
1693
1694 2010-03-04  David S. Miller  <davem@davemloft.net>
1695
1696        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1697        that don't provide the siginfo in the second signal handler argument
1698        are buggy, and this has been fixed for years.
1699        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1700        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1701
1702 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1703
1704         * aot-runtime.c (find_symbol): Fix a leak.
1705         (decode_patch): Ditto.
1706
1707 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1708
1709         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1710
1711 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1712
1713         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1714
1715 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1716
1717         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1718
1719 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1720
1721         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1722         to check for errors, it's enough to create the metadata open.
1723
1724         Fixes #562150
1725
1726 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1727
1728         * trace.c|h:
1729         * mini-exceptions.c: Add support for printing stack traces when handling
1730         exceptions, and when printing exceptions thrown while tracing also print
1731         the exception message.
1732
1733 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1734
1735         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1736         since the exclude token is a valid string character.
1737
1738 2010-03-02  Levi Bard  <levi@unity3d.com>
1739
1740         * debugger-agent.c: Invalidate thread stacks on domain unload.
1741
1742 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1743
1744         * method-to-ir.c: Emit dummy_use for stored reference after write
1745         barriers to make sure the object is pinned if the GC interrupts
1746         before the write barrier is done.
1747
1748 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1749
1750         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1751
1752 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1753
1754         * debugger-agent.c: Add a log message printing the protocol version.
1755
1756 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1757
1758         * debugger-agent.c: Add a new command to communicate the protocol version used
1759         by the client. This could be used to allow newer runtimes to communicate with
1760         older clients.
1761
1762 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1763
1764         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1765
1766 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1767
1768         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1769         type.
1770
1771 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1772
1773         * mini-arm.c: make the arm cpu arch configurable with the
1774         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1775         Bug #584198.
1776
1777 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1778
1779         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1780         support for the perf tool on Linux.
1781
1782 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1783
1784         * method-to-ir.c: make string.InsertenalSetChar() specialization
1785         effective.
1786
1787 2010-03-01  Robert Jordan  <robertj@gmx.net>
1788
1789         * Makefile.am: fix the non-static build.
1790
1791 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1792
1793         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1794         here.
1795
1796 2010-02-26  Robert Jordan  <robertj@gmx.net>
1797
1798         * tasklets.c (continuation_store): Return from an error condition
1799         immediately.
1800
1801 2010-02-26  Martin Baulig  <martin@ximian.com>
1802
1803         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1804
1805         * debug-mini.c
1806         (MonoDebuggerThreadInfo): Added `internal_flags'.
1807         (MonoDebuggerInternalThreadFlags): New enum.
1808         (_mono_debugger_throw_exception): Don't signal the debugger if a
1809         type abort was requested.
1810         (_mono_debugger_unhandled_exception): Likewise.
1811         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1812         (mono_debugger_runtime_invoke): If the debugger requested a thread
1813         abort during the invocation, reset it here.
1814
1815 2010-02-26  Martin Baulig  <martin@ximian.com>
1816
1817         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1818         instead of `MonoThread *'.
1819
1820 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1821
1822         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1823         code offsets table, as it is mostly sorted.
1824
1825 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1826
1827         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1828         Fixes #582991.
1829
1830 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1831
1832         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1833
1834 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1835
1836         * Makefile.am: build the new ABI version of the libmono library.
1837         * debugger-agent.c, mini.c: fix warnings with the new API.
1838         * jit.h: don't depend on glib.h being included.
1839
1840 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1841
1842         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1843
1844 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1845
1846         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1847         ThreadStatic variables.
1848
1849 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1850
1851         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1852         data is not freed yet. Fixes #582460.
1853
1854 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1855
1856         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1857         event requests. Bump protocol minor version.
1858
1859 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1860
1861         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1862
1863 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1864
1865         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1866         #581950.
1867
1868         * iltests.il.in: Add a test.
1869
1870 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1871
1872         * mini.c (inline_method): Check for loader errors.
1873
1874 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1875
1876         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1877         instead of mono_method_get_header as it doesn't decode locals
1878         so the called method can have unresolved dependencies that will only
1879         be satisfied after the current method is JIT'd.
1880
1881         Fixes #550968.
1882
1883 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1884
1885         * basic.cs (test_0_div_opt): Speed this up a bit.
1886
1887 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1888
1889         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1890
1891         * mini.c (mono_jit_create_remoting_trampoline): Call
1892         mono_create_specific_trampoline () instead of
1893         mono_arch_create_specific_trampoline ().
1894
1895         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1896
1897 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1898
1899         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1900         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1901
1902         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1903
1904         * mini-amd64.c: Fix DISABLE_JIT support.
1905
1906 2010-02-20  Geoff Norton  <gnorton@novell.com>
1907
1908         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1909
1910 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1911
1912         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1913         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1914         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1915         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1916         handle_exception.
1917
1918 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1919
1920         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1921         edx/ecx too. This is needed to support OP_SEQ_POINT.
1922
1923 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1924
1925         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1926
1927         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1928
1929 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1930
1931         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1932         LLVM+AOT+exceptions, not enabled yet.
1933
1934 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1935
1936         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1937
1938 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1939
1940         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1941         xdebug info for these.
1942
1943         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1944         in a few places.
1945
1946         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1947         not used yet.
1948
1949 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1950
1951         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1952
1953 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1954
1955         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1956         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1957
1958         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1959         for mtouch.
1960
1961 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1962
1963         * debugger-agent.c: handle incomplete reads and EINTR in
1964         recv()/send(). This could have been causing random
1965         disconnections.
1966
1967 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1968
1969         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1970         points.
1971
1972         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1973         so they have small offsets. Fixes #566311.
1974
1975 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1976
1977         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1978
1979 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1980
1981         * mini-amd64.c: Remove the special casing of byref in a few places now that
1982         mini_type_get_underlying_type () handles it.
1983
1984         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1985         by returning native int. Fixes #577984.
1986
1987 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1988
1989         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1990         a macro.
1991
1992         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1993         of putting the clause itself.
1994
1995         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1996
1997 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1998
1999         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
2000         might be unaligned.
2001
2002 2010-02-10  Geoff Norton  <gnorton@novell.com>
2003
2004         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
2005
2006 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2007
2008         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
2009         llvm methods too.
2010
2011         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
2012         it is not an LLVM generated symbol.
2013
2014         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
2015
2016         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
2017         implementation in gshared mode because it causes regressions.
2018
2019         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
2020
2021         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
2022         should be done by the caller.
2023
2024         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
2025
2026         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
2027
2028         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
2029         since mono_jit_info_table_find () doesn't do it anymore.
2030
2031         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
2032         instead of mono_jit_info_table_find ().
2033
2034 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2035
2036         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
2037
2038         * aot-compiler.c (encode_method_ref): Update after the removal of
2039         mono_gc_get_managed_allocator_type ().
2040
2041         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
2042         Fixes #564538.
2043
2044 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
2045
2046         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
2047         generic params as well.
2048         (handle_isinst): Ditto.
2049
2050         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
2051         instead of always calling an icall.
2052
2053         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
2054         computing the size of the got.
2055
2056         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
2057         when using LLVM. Instead of emitting it as an LLVM method, emit it using
2058         the assembly directive '.set' so it points to the first LLVM emitted method.
2059
2060 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2061
2062         * mini.c (mini_method_verify): Report the method which failed to verify.
2063
2064 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2065
2066         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
2067         to avoid JIT'ng dead basic blocks. This is the same behavior as the
2068         runtime MS verifier.
2069
2070 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2071
2072         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
2073         #561962.
2074
2075 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2076
2077         * mini-llvm.c: Init the jit module only when first JITting.
2078
2079         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
2080
2081         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
2082
2083         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
2084         replaced with the real got.
2085
2086         * debugger-agent.c (type_commands): Return the enumness if the type as well.
2087
2088         * image-writer.c: Reduce the amount of #ifdefs a bit.
2089
2090         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
2091         llvm on darwin/arm.
2092
2093         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
2094
2095         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
2096         global.
2097
2098 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2099
2100         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
2101         (mono_llvm_emit_method): Fix unaligned stores too.
2102
2103         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
2104         so async stack walks don't crash.
2105
2106 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2107
2108         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
2109         was not patched if the callee needed an rgctx trampoline.
2110
2111 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2112
2113         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
2114         vtable address in AOT code.
2115
2116 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2117
2118         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
2119         MonoInst's.
2120
2121 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
2122
2123         * genmdesc.pl: remove dependency on external cpp.
2124
2125 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2126
2127         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
2128         using LLVM, its not needed, and abcrem can't handle it.
2129
2130 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
2131
2132         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
2133         it easier to group instructions and reduce duplication.
2134
2135 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2136
2137         * decompose.c: Move the array/soft float decompose routines here from
2138         method-to-ir.c.
2139
2140         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
2141
2142 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
2143
2144         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
2145         to tell LLVM that the got is constant, not used yet.
2146
2147         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
2148
2149 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2150
2151         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
2152         managed wrappers.
2153
2154 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2155
2156         * aot-compiler.c (add_wrappers): Commit the hack which generates
2157         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
2158         custom attribute.
2159
2160 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2161
2162         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
2163         a fault, only used by the LLVM backend.
2164
2165         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
2166         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
2167
2168         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
2169         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
2170
2171         * mini-llvm.c: Only generate volatile loads from load instructions which have
2172         the MONO_INST_FAULT flag set.
2173
2174 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2175
2176         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
2177         64 bit platforms.
2178
2179 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2180
2181         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
2182         sequence points. Fixes #571236.
2183
2184 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2185
2186         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2187         end of the appdomain unload process, after assemblies have been unloaded.
2188         Fixes #574842.
2189
2190 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2191
2192         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2193         works.
2194
2195         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2196         Fixes #573988.
2197
2198 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2199
2200         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2201
2202 2010-01-26  Geoff Norton  <gnorton@novell.com>
2203
2204         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2205         with struct marshalability.
2206
2207 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2208
2209         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2210         it supports class names as well.
2211
2212         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2213         needed by the GC map code.
2214
2215         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2216         flags if needed.
2217
2218         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2219         if cfg->init_ref_vars is set.
2220
2221         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2222         cfg->disable_initlocals_op_refs is set.
2223
2224         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2225         using liveness info if cfg->compute_precise_live_ranges is set.
2226
2227         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2228         volatile variables correctly. Add comments about the live ranges. Not enabled
2229         yet.
2230
2231 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2232
2233         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2234         0x2a into them in method prologs.
2235
2236         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2237
2238 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2239
2240         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2241         classes, since llvm is compiled with -fno-rtti.
2242
2243         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2244
2245         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2246         llvm does not require it.
2247
2248         * aot-runtime.c (load_method): Print the full name of the last aot method.
2249
2250 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2251
2252         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2253         thread has not fully started yet.
2254
2255 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2256
2257         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2258
2259 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2260
2261         * driver.c: Do not abort if LLVM is not supported, print a
2262         warning and add the information to the Mono JIT information.
2263
2264 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2265
2266         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2267         using explicit null checks.
2268
2269 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2270
2271         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2272         related code.
2273
2274         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2275         () in one place.
2276         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2277         its no longer needed.
2278
2279         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2280
2281         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2282         define for platforms still using it (s390). Get rid of the
2283         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2284
2285         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2286         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2287
2288         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2289         the caller pushed the arguments.
2290
2291         * mini-llvm.c: Enable throwing exceptions on x86.
2292
2293         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2294         "Thread (nil) may have been prematurely finalized" messages if this is called
2295         on a thread not registered with the runtime.
2296
2297         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2298
2299 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2300
2301         * jit-icalls.c (mono_array_new_3): New jit icall.
2302
2303         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2304
2305         * arrays.cs: Add a test for 3 dimensional arrays.
2306
2307 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2310         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2311         used.
2312
2313         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2314         thrown on x86.
2315
2316         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2317
2318         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2319
2320         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2321
2322 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2323
2324         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2325           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2326
2327         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2328
2329         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2330
2331         Code is contributed under MIT/X11 license.
2332
2333 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2334
2335         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2336
2337         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2338
2339         * mini.c (mini_method_compile): Set the new flag when running under the
2340         debugger.
2341
2342 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2343
2344         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2345         a ref/noref value + a global pin flag, so parts of stack frames can still be
2346         precisely marked even if they include stuff which needs pinning. Improve logging.
2347         Fix many bugs. Not enabled yet.
2348
2349         * gc-test.cs: Add a few tests.
2350
2351         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2352         the normal -v options. Avoid propagating liveness information through bblocks
2353         which end with a NOT_REACHED opcode.
2354
2355         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2356         after cfg has been freed.
2357
2358 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2359
2360         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2361         if a clause is skipped because it uses the exception object, since it could
2362         have caught the exception.
2363
2364         * exceptions.cs: Add a test.
2365
2366 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2367
2368        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2369
2370         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2371         ICollection<T> wrappers.
2372
2373 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2374
2375         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2376
2377 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2378
2379         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2380         NOMAP32BIT or optimize_for_xen is set.
2381
2382 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2383
2384         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2385         mono_metadata_str_hash () instead.
2386
2387 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2390         sizeof (void*).
2391
2392         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2393
2394 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2395
2396         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2397         flag is set.
2398
2399         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2400         throwing code correctly.
2401
2402         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2403
2404 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2405
2406         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2407         ftnptrs created by us, handle RGCTX_FETCH correctly.
2408         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2409
2410         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2411         ftnptr added by mono_aot_get_named_code ().
2412
2413 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2414
2415         * mini-arm.c: Fix a few LLVM problems.
2416
2417         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2418
2419 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2420
2421         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2422         AOT compiling.
2423
2424 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2425
2426         * jit.h, method-to-ir.c: added ability to set the policy for
2427         inserting breakpoints from the break IL instruction or the
2428         Debugger.Break () API call.
2429
2430 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2431
2432         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2433         assemblies need to be eagerly loaded.
2434
2435 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2436
2437         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2438
2439 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2440
2441         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2442         an argument which matches any exception.
2443
2444 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2445
2446         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2447         optimization if the called method is gshared and marshalbyref, since gshared
2448         methods can' have wrappers. Fixes #569390.
2449
2450         * generics.cs: Add a test.
2451
2452 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2453
2454         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2455         callable from gdb.
2456
2457 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2458
2459         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2460
2461 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2462
2463         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2464         since it is not supported in win2000.
2465
2466 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2467
2468         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2469         error if loading an assembly fails.
2470         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2471
2472         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2473         if exists.
2474
2475         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2476         compiled methods.
2477
2478         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2479
2480         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2481         is not supported yet.
2482
2483         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2484
2485 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2486
2487         * method-to-ir.c: All types with variant arguments must fallback to the
2488         slow path. This makes cast of variant delegates work.
2489
2490         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2491         argument that is set to TRUE is the returned vtable slot is for a variant
2492         interface. Changed a g_print + g_assert_not_reached to a g_error.
2493
2494         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2495         a similar fashion of generic virtual methods.
2496
2497 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2498
2499         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2500         when cfg is null.
2501
2502         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2503         method using a variance aware function.
2504
2505         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2506
2507 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2508
2509         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2510         do an icall for now.
2511
2512 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2513
2514         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2515         If LLVM decides to set the code model to Large, reset it to Default.
2516
2517 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2518
2519         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2520         stripped binaries as well.
2521
2522 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2523
2524         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2525         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2526
2527         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2528         reg.
2529
2530 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2531
2532         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2533         separate function.
2534
2535         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2536         as the type info to llvm.eh.selector.
2537         (exception_cb): Use the type info for filling out some fields of
2538         MonoJitExceptionInfo like the flags and the exception class. This is needed
2539         because the LLVM produced exception handling clauses might not match the original
2540         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2541
2542         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2543         separate function. Add an extra argument which returns the type infos
2544         corresponding to the exception clauses.
2545
2546         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2547         exception handling clauses.
2548
2549 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2550
2551         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2552         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2553         to fix an AOT case.
2554
2555 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2556
2557         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2558         internal assembly.
2559
2560 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2561
2562         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2563         llvm code.
2564
2565 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2566
2567         * mini.c (mini_method_compile): Verify the method before calling
2568         mono_compile_create_vars as this might crash since it uses method
2569         information.
2570
2571         Fixes #560196.
2572
2573 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2574
2575         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2576         one case if AOTing, since the class might not be a concrete class.
2577
2578 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2579
2580         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2581         functions which are now defined in mempool-internals.h.
2582
2583         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2584
2585         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2586
2587 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2588
2589         * mini.c:
2590         * method-to.ir.c:
2591         * mini-*.c: Properly handle generic enums.
2592
2593         Fixes #566294
2594
2595 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2596
2597         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2598         in a few more places.
2599
2600 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2601
2602         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2603         nullable parameters. Fixes #567351.
2604
2605 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2606
2607         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2608
2609 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2610
2611         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2612         mono_get_generic_context_from_code () call.
2613
2614         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2615
2616 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2617
2618         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2619         needed.
2620
2621 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2622
2623         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2624         mono_method_get_signature returns NULL. Fix #567084
2625
2626 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2627
2628         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2629         instead of once for each module.
2630
2631 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2632
2633         * debugger-agent.c (ss_start): Implement step over for the last sequence
2634         point in methods.
2635
2636         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2637         have the STEP_LOC flag set.
2638
2639         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2640         fails. Fixes #566689.
2641
2642 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2643
2644         * mini.c (mono_add_seq_point): New helper function.
2645         (mono_save_seq_point_info): New function to save sequence point info, extracted
2646         from mini_method_compile ().
2647
2648         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2649
2650         * mini.h (MonoSeqPointInfo): New structure containing information about
2651         the sequence points of a JITted method.
2652         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2653         'bucket' field.
2654
2655         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2656         point information is stored, use a MonoSeqPointInfo structure instead of a
2657         GPtrArray. For each seq point, compute a list of successor seq points.
2658
2659         * debugger-agent.c: Use the successor list to implement step-over more
2660         efficiently: instead of single stepping until a different line/IL offset is
2661         reached, place breakpoints into all successor seq points.
2662
2663         * mini.h: Bump AOT file format version.
2664
2665 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2666
2667         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2668
2669         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2670
2671 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2672
2673         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2674         build.
2675
2676 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2677
2678         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2679         alloca as g_malloc is not signal safe.
2680
2681 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2682
2683         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2684         VALGRIND_DISCARD_TRANSLATIONS.
2685
2686         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2687         checks, they are no longer needed.
2688
2689         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2690         a function into a sigctx which can handle function pointers.
2691
2692         * mini-ppc.c: Implement soft debugger support on ppc64.
2693
2694         * mini-ppc.c: Implement soft debugger support.
2695
2696 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2697
2698         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2699
2700 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2701
2702         * mini.c (mono_get_runtime_build_info): include Mono version in
2703         the returned value.
2704
2705         * driver.c (mono_main): VERSION is now included in the string
2706         returned from mono_get_runtime_build_info()
2707
2708 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2709
2710         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2711         signatures. Fixes #565143.
2712
2713         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2714
2715 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2716
2717         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2718
2719 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2720
2721         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2722         making max stack 10x smaller.
2723
2724 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2725
2726         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2727
2728 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2729
2730         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2731
2732 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2733
2734         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2735         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2736
2737         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2738
2739         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2740
2741         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2742
2743         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2744         the compilation.
2745
2746 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2747
2748         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2749         raise an invalid program exception.   
2750
2751         For other opcodes that we might not handle use a g_warning and
2752         raise the exception.   Beats termination.
2753
2754         Fixes #561724
2755
2756 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2757
2758         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2759
2760         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2761         by merging the LLVM and !MAP_32BIT cases.
2762
2763 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2764
2765         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2766         sigctx being passed in, as we have no CONTEXT available in the APC.
2767
2768         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2769         for now.
2770
2771         Code contributed under MIT/X11 license.
2772
2773 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2774
2775         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2776         in the LLVM backend on AMD64.
2777
2778         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2779         FDE.
2780
2781         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2782
2783         * mini-llvm.c: Export mono_personality for AOT.
2784
2785         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2786
2787         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2788         implicit exception can occur.
2789
2790         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2791         OP_IMPLICIT_EXCEPTION instruction.
2792
2793         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2794
2795         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2796
2797         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2798         inside a protected block.
2799
2800         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2801         trampolines doesn't include the argument.
2802
2803         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2804         trampolines on amd64.
2805
2806         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2807         of RDI.
2808
2809         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2810         disabled for methods with clauses.
2811
2812         * mini-llvm.c: Enable support for catch clauses.
2813
2814         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2815         end of an LLVM compiled finally clause.
2816         (mono_handle_exception_internal): Save the exception handling state in TLS
2817         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2818         resume unwinding from that point.
2819
2820         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2821         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2822         to obtain the addresses of the exception handling regions.
2823
2824         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2825         finally clauses are supported.
2826
2827         * mini.c (mini_method_compile): Add support for LLVM code with exception
2828         handlers.
2829
2830 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2831
2832         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2833         proper size.
2834
2835 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2836
2837         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2838         as a primitive type.
2839
2840 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2841
2842         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2843         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2844         #564000.
2845
2846 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2847
2848         * method-to-ir.c (mini_redirect_call): do not redirect the
2849         InternalAllocateStr internal call if string profiling is enabled.
2850
2851 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2852
2853         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2854         generic methods.
2855
2856         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2857         unwind.h header file.
2858
2859         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2860         newer valgrind versions seems to handle this fine.
2861
2862 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2863
2864         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2865         on the debugger thread.
2866
2867 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2868
2869         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2870
2871         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2872
2873         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2874
2875         * cpu-<ARCH>.md: Make call_handler clob:c.
2876
2877         * mini.c: Reenable SSA for methods with clauses.
2878
2879         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2880         as it causes failures on x86.
2881
2882 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2883
2884         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2885         returns NULL (e.g. a bad assembly).
2886
2887 2009-12-08  Geoff Norton  <gnorton@novell.com>
2888
2889         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2890         stepping out into native code.  There were issues with nested invokes
2891         like .cctors.
2892
2893 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2894
2895         * mini.c (mini_method_compile): Do the disable_llvm checks early
2896         and avoid the LLVM compile pass if the checks fail.
2897
2898         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2899
2900         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2901         LLVM optimizations don't try to remove them.
2902
2903         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2904         different file so the original remains.
2905
2906 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2907
2908         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2909
2910         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2911
2912         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2913         support for non-inline unwind descriptors.
2914
2915 2009-12-07  Geoff Norton  <gnorton@novell.com>
2916
2917         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2918         the interrupt_count slightly differently.  Native threads were never
2919         marked as resumed.
2920
2921 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2922
2923         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2924         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2925         yet generate this info.
2926
2927         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2928
2929         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2930         client can distinguish between intptrs and longs.
2931
2932 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2933
2934         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2935         blob.
2936
2937         * aot-runtime.c (load_function): Update after the change above.
2938
2939         * mini.h: Bump AOT file format version.
2940
2941         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2942         if the delegate class is dynamic.
2943
2944         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2945         in gshared code too using the new rgctx info type
2946         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2947
2948 2009-12-04  Geoff Norton  <gnorton@novell.com>
2949
2950         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2951         we need to track the original suspend count so the thread properly
2952         wakes up in resume_thread.
2953
2954 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2955
2956         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2957         code.
2958
2959         * generics.cs: Add a test.
2960
2961         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2962         is 0. Simplify a lot of code using this.
2963
2964         * mini-trampolines.c (mono_delegate_trampoline): Call
2965         mono_create_static_rgctx_trampoline () before saving the final address in
2966         delegate->method_code, to avoid calling it each time a delegate is first called.
2967
2968         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2969         which need static rgctx trampolines.
2970
2971         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2972         keyed on the method+addr pair, since addr could be either the method addr or
2973         an unbox trampoline in the AOT case. Fixes #560246.
2974
2975 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2976
2977         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2978         place it was called before too.
2979
2980 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2981
2982         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2983         if no security manager is present, to speed up the AOT case. Call
2984         mono_class_vtable () full with raise_on_error == TRUE instead.
2985
2986 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2987
2988         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2989         the local optimization passes can take its result into account. Fixes
2990         #559876.
2991
2992         * exceptions.cs: Add a test.
2993
2994 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2995
2996         This patch is contributed under the terms of the MIT/X11 license
2997
2998         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2999
3000 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
3001
3002         * mini.h (MonoInst): Remove unused 'ssa_op' field.
3003
3004         * debugger-agent.c: Rework the handling of stack traces of running threads to
3005         avoid crashes if compute_frames () tries to walk the stack of running thread.
3006
3007         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
3008
3009         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
3010
3011         * mini.h (StackFrameInfo): Add an 'lmf' field.
3012
3013 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
3014
3015         * debugger-agent.c (suspend_current): Always set really_suspended.
3016
3017         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
3018
3019         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
3020
3021 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
3022
3023         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
3024         really suspended.
3025
3026 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
3027
3028         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
3029
3030 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3031
3032         * mini-trampolines.c: Fix MSVC build.
3033
3034 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3035
3036         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
3037
3038 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
3039
3040         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
3041         the instruction following an OP_FCOMPARE is optimized away.
3042
3043 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
3044
3045         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
3046         emit_autoreg () into this arch-specific function.
3047
3048         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
3049         code, it is no longer needed.
3050
3051         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
3052
3053         * mini.h: Bump AOT file format version.
3054
3055         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
3056         using the sorted_code_offsets array, instead of reading it from the
3057         exception debug info.
3058         (load_method): Call mono_aot_find_jit_info instead of
3059         decode_exception_debug_info ().
3060
3061         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
3062         LLVM compiled as a flag.
3063
3064 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
3065
3066         * debugger-agent.c (resume_thread): Fix a warning.
3067
3068         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
3069         generated.
3070
3071 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3072
3073         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
3074         contents to MonoAotFileInfo.
3075
3076 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3077
3078         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
3079         Put all binary data into a giant blob, similarly to the way .net assemblies
3080         store binary data. Emit offset tables in a compact form to reduce their size.
3081
3082         * mini.h: Bump AOT file format version.
3083
3084         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
3085         places.
3086
3087         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
3088         avoid linear searches at runtime.
3089
3090         * aot-runtime.c (find_symbol): Update this to use the hash.
3091
3092         * mini.h: Bump AOT file format version.
3093
3094 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3095
3096         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
3097         container.
3098
3099         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
3100         too.
3101
3102         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
3103         the distribution of got slot types.
3104
3105         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
3106
3107         * method-to-ir.c: Add support for generating explicit null checks.
3108
3109 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
3110
3111         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
3112         on a random thread if possible.
3113
3114         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
3115         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
3116         correctly.
3117
3118         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
3119         regs. Pass the real size of the regs array to mono_unwind_frame ().
3120
3121         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
3122         ones instead.
3123
3124 2009-11-24  Geoff Norton  <gnorton@novell.com>
3125
3126         * mini-darwin.c: Work around apple bug rdar://7209349  See
3127         http://openradar.appspot.com/7209349 for details.  Synopsis,
3128         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
3129         never been initialized before.
3130
3131 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3132
3133         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
3134
3135         * mini-arm.c (mono_arm_thumb_supported): New helper function.
3136
3137 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3138
3139         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
3140         OP_SHL_IMM is not 32 bit.
3141
3142 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3143
3144         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
3145
3146 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3147
3148         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
3149         encountered.
3150
3151         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
3152         > 0 since some threads can resume if their resume_count is > 0.
3153         (invoke_method): Avoid reading freed memory.
3154
3155         * debugger-agent.c (process_suspend): Extract the suspend code from
3156         process_single_step_inner () to a separate function. Rework the code to prevent
3157         races between this function and thread interrupts.
3158
3159         * debugger-agent.c (suspend_current): Check the resume_count field instead
3160         of resume_one so suspends+resumes during single threaded invokes work
3161         correctly.
3162
3163 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3164
3165         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
3166         to make the generated code smaller.
3167
3168         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
3169         sequence generated by recent LLVM versions.
3170
3171         * mini-llvm.c: Add support for a few simple cases which weren't supported
3172         before.
3173
3174         * mini-trampolines.c (mono_magic_trampoline): Don't call
3175         mono_arch_get_vcall_slot () when llvm is enabled.
3176
3177         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
3178
3179         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
3180         into a new function called common_call_trampoline () which is used by the
3181         llvm vcall trampoline as well.
3182
3183         * debugger-agent.c: Implement single threaded invokes.
3184
3185         * debugger-agent.c: Revert change which broke the agent on linux.
3186
3187         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3188         #557606.
3189
3190         * generics.cs: Add a test.
3191
3192 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3193
3194         * debugger-agent.c: Fix the cygwin build.
3195
3196 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3197
3198         * cprop.c: Remove this unused file.
3199
3200 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3201
3202         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3203         #557262.
3204
3205         * basic.cs: Add a test.
3206
3207 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3208
3209         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3210         in one more place.
3211
3212 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3213
3214         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3215         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3216         it. Use this flag to control llvm related code paths instead of #ifdef
3217         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3218         AOT code.
3219
3220         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3221
3222         * mini.h: Bump AOT file format version.
3223
3224         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3225         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3226
3227         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3228         was used as an assembly filter.
3229
3230 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3231
3232         * unwind.c: Fix support for ppc.
3233
3234         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3235         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3236
3237 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3238
3239         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3240         port.
3241         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3242         added by the ps3 changes.
3243
3244 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3245
3246         * mini-gc.c: Resurrect this, so at least it compiles.
3247
3248         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3249
3250 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3251
3252         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3253         create_event_list () so assembly filters can be used.
3254
3255         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3256         from the LMF.
3257
3258 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3259
3260         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3261         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3262         is disabled.
3263
3264         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3265         classes for char/bool too.
3266
3267         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3268
3269         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3270         used.
3271
3272         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3273         Fix warnings.
3274
3275 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3276
3277         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3278         
3279         Code contributed under MIT/X11 license.
3280
3281 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3282
3283         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3284         threads in native code work.
3285
3286         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3287         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3288         version.
3289
3290 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3291
3292         * debugger-agent.c: Implementation for Windows platform.
3293
3294         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3295         primitives. Use SEH to implement breakpoints and single stepping.
3296
3297         * mini-x86.h: Enable soft debugger on Windows.
3298
3299         Code contributed under MIT/X11 license.
3300
3301 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3302
3303         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3304         under XEN. Fixes #522894.
3305
3306         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3307
3308         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3309         interface calls in LLVM AOT code.
3310
3311         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3312         is found.
3313
3314         * mini-llvm.c: Add support for OP_VPHI.
3315
3316         * objects.cs: Add a test.
3317
3318 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3319
3320         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3321         this is called on the debugger thread.
3322
3323 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3324
3325         * mini-llvm.c: Add soft-float support.
3326
3327         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3328         FCALL which returns an R4.
3329
3330         * driver.c (mono_main): Add a missing '\n'.
3331
3332         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3333         platforms which doesn't support the LLVM IMT trampoline.
3334
3335 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3336
3337         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3338
3339         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3340
3341         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3342         virtual calls.
3343
3344         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3345
3346 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3347
3348         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3349         Instead of emitting a method_order table, sort the contents of the code_offsets
3350         table and do a binary search in the sorted table. The previous approach doesn't
3351         work with LLVM which emits methods in a arbitrary order.
3352
3353         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3354         in the .eh_frame section in ELF files.
3355
3356         * mini.h: Bump corlib file format version.
3357
3358         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3359
3360         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3361         LDMIA->LDM macro name change.
3362
3363 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3364
3365         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3366         x86.
3367
3368         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3369         SVN.
3370
3371         * aot-compiler.c: Ditto.
3372
3373         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3374         &align to mini_type_stack_size_full ().
3375
3376         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3377
3378         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3379
3380 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3381
3382         * mini-arm.c: Compute the stack space used by arguments using
3383         mini_type_stack_size_full ().
3384
3385 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3386
3387         * optflags-def.h: Remove dead TREEPROP optimization.
3388
3389 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3390
3391         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3392
3393         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3394
3395 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3396
3397         * driver.c (mono_jit_parse_options): New public API function to parse options
3398         as done by the runtime executable.
3399
3400         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3401         when handling named arguments.
3402
3403 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3404
3405         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3406         for passing small vtypes in registers, make the CallInfo structures more
3407         similar to the code on the other platforms.
3408
3409         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3410         the code in the prolog requires it.
3411
3412 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3413
3414         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3415         (koush@koushikdutta.com).
3416
3417         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3418         where the thunk memory should be allocated from. Fixes appdomain unloading
3419         on arm.
3420
3421 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3422
3423         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3424         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3425
3426 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3427
3428         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3429         AOT, as it is not implemented yet.
3430
3431         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3432
3433 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3434
3435         * debugger-agent.c: Fix windows build.
3436
3437 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3438
3439         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3440         after the client connects/disconnects.
3441
3442         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3443         when an exception of a given type is thrown.
3444
3445         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3446         only on an uncaught exception.
3447
3448         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3449
3450         * debugger-agent.c: Add a 'launch' option.
3451
3452 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3453
3454         * debugger-agent.c: Add a 'timeout' option.
3455
3456 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3457
3458         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3459         the JDWP agent.
3460
3461 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3462
3463         * debugger-agent.c (set_breakpoint): Emit a log message.
3464
3465 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3466
3467         * mini-arm.c: Fix the arm build.
3468
3469 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3470
3471         * aot-compiler.c: don't leak the value returned from
3472         mono_type_full_name().
3473
3474 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3475
3476         * debugger-agent.c: defer including mono-mutex.h until we know the
3477         agent is supported.
3478
3479 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3480
3481         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3482         of pthreads directly.
3483
3484         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3485         exception handlers. Pass info argument.
3486
3487         * mini.h: Adjust signatures of soft debugger functions to pass void*
3488         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3489
3490         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3491         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3492         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3493         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3494
3495         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3496
3497         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3498         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3499         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3500         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3501
3502         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3503
3504         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3505
3506         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3507
3508         * mono-semaphore.h: Skeleton implementation for Windows.
3509
3510         Code contributed under MIT/X11 license.
3511
3512 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3513
3514         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3515
3516         Code contributed under MIT/X11 license.
3517
3518 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3519
3520         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3521
3522         Code contributed under MIT/X11 license.
3523
3524 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3525
3526         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3527         debug info to 100 because 10 still slows down gdb too much.
3528
3529         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3530         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3531         them in the wrappers.
3532
3533 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3534
3535         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3536
3537         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3538
3539         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3540         function mono_aot_get_array_helper_from_wrapper ().
3541
3542         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3543         array helper methods.
3544
3545 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3546
3547         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3548         the value was loaded from memory.
3549
3550         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3551         the value was loader from there.
3552
3553         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3554         without constant swizzle.
3555
3556 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3557
3558         * mini-amd64.c: Put soft debugger functions behind a
3559         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3560
3561         * mini-amd64.h: disable the soft debugger in windows.
3562
3563         Code contributed under MIT/X11 license.
3564
3565 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3566
3567         * mini-x86.c: Put soft debugger functions behind a
3568         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3569
3570         Code contributed under MIT/X11 license.
3571
3572 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3573
3574         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3575         to mono_arch_find_jit_info_ext.
3576
3577         Code contributed under MIT/X11 license.
3578
3579 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3580
3581         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3582
3583         * debugger-agent.c: Add support for filtering events by assemblies.
3584
3585         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3586         the agent is not enabled.
3587
3588 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3589
3590         * exceptions-x86.c: hopefully last change to fix the windows build.
3591         This one courtesy of Jonathan Chambers.
3592
3593 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3594
3595         * debugger-agent.c: remove unused function.
3596
3597 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3598
3599         * debugger-agent.c: add #ifdefs for a few header files.
3600         * mini-x86.h: disable the soft debugger in windows.
3601         Step 1 of 2 to make this compile on windows with gcc.
3602
3603 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3604
3605         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3606         as it breaks the build.
3607
3608 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3609
3610         Merge the soft debugger branch.
3611
3612         * debugger-agent.h debugger-agent.c: New files containing the soft
3613         mode debugger module.
3614
3615         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3616         at the appropriate locations.
3617
3618         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3619         opcode.
3620
3621         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3622         enable/disable single stepping.
3623
3624         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3625         which returns all information in a StackFrameInfo structure, and can handle the
3626         LMF frames added by the debugger.
3627
3628         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3629         about an LMF frame.
3630
3631         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3632         walker function which works on a specific thread and passes a StackFrameInfo
3633         structure to its callback.
3634
3635         * mini.c (mini_init): Initialize the debugger agent.
3636
3637         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3638
3639         * mini-ops.h: Add OP_SEQ_POINT opcode.
3640
3641         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3642         arguments to the debugger agent.
3643
3644 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3645
3646         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3647         speed things up.
3648
3649         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3650
3651         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3652
3653         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3654
3655         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3656         if needed.
3657         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3658         sets the IMT argument and makes a virtual call.
3659
3660         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3661
3662 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3663
3664         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3665         the windows build.
3666
3667 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3668
3669         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3670         runtime. Fixes #551228.
3671
3672 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3673
3674         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3675
3676         * basic.cs: Add a test.
3677
3678         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3679         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3680         CONSTRAINED. Fixes #550964.
3681
3682         * generics.cs: Add a test.
3683
3684 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3685
3686         * mini-posix.c (add_signal_handler): Use
3687         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3688
3689 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3690
3691         Contributed under the terms of the MIT/X11 license by
3692         Jerry Maine <crashfourit@gail.com>.
3693
3694         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3695         sse4a for simd intrinsics.
3696
3697         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3698         sse4a for simd intrinsics.
3699
3700 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3701
3702         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3703         instead of inst_p1 which is not the same on ILP32 platforms.
3704
3705 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3706
3707         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3708         not the mscorlib one before calling mono_get_lmf_addr.
3709
3710         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3711         of the ip to the LMF.
3712
3713         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3714         immediate in the op->op_imm optimization.
3715
3716         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3717         understand. VTypes now work, but are not abi compliant, as they are
3718         split into 4 byte parts instead of 8.
3719         (emit_memcpy): Fix the unrolled case to work on the PS3.
3720
3721         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3722
3723         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3724         the default when static linking.
3725
3726         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3727
3728         * aot-compiler.c: Add an autoreg option to automatically register
3729         statically linked aot modules using ELF .ctors.
3730
3731         * genmdesc.pl: Add __ppc64__ to allowed defines.
3732
3733 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3734
3735         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3736         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3737
3738 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3739
3740         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3741
3742 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3743
3744         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3745         which will contain the domain where the method was found.
3746
3747         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3748         mini_jit_info_table_find ().
3749
3750         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3751
3752         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3753
3754 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3755
3756         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3757         set, its not supported yet.
3758
3759 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3760
3761         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3762         iface wrapper is not found.
3763         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3764
3765 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3766
3767         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3768         which have a different name.
3769
3770         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3771         wrappers and Array.GetGenericValueImpl ().
3772
3773         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3774         because of the change above.
3775
3776         * generics.cs: Add a test for full aot + generic array ifaces.
3777
3778 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3779
3780         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3781         that hides the previous one.
3782
3783 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3784
3785         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3786         marshalled. Fixes #541623.
3787
3788 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3789
3790         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3791
3792 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3793
3794         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3795
3796 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3797
3798         * mini-posix.c (sigprof_signal_handler):
3799         Implemented support for building stat call chans in different ways.
3800
3801 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3802
3803         * mini-exceptions.c (mono_find_jit_info):
3804         Also check that a jit info has been found (fixes a profiler crash).
3805
3806 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3807
3808         * mini.c (mono_codegen):
3809         Call mono_profiler_code_buffer_new with correct code address.
3810
3811 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3812
3813         * driver.c (mono_main): Change the date in the copyright.
3814
3815 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3816
3817         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3818         allocator in shared generic code for open classes, because we
3819         can't get those classes' vtables.  We need to make managed
3820         allocators not depend on the vtable at compile-time to solve this.
3821
3822 2009-10-13  Martin Baulig  <martin@ximian.com>
3823
3824         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3825         `const guint8 *trampoline' argument; send both the old and the new
3826         notification.
3827
3828 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3829
3830         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3831         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3832         (can_marshal_struct): Skip structures with auto layout.
3833
3834         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3835
3836 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3837
3838         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3839         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3840         a variable to hold the stack slot used by the int<->float conversion opcodes.
3841
3842         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3843
3844 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3845
3846         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3847         when using full-aot.
3848
3849 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3850
3851         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3852         each instance of Comparer<T>.
3853
3854         * generics.cs: Add a new test.
3855
3856 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3857
3858         * driver.c (parse_debug_options): Add a 'gdb' option.
3859
3860         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3861
3862         * image-writer.c: Add support for emitting the image into a memory buffer.
3863
3864         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3865
3866         * aot-compiler.c: Add support for registering debug info with GDB using the
3867         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3868         MONO_XDEBUG to 'gdb'.
3869
3870 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3871
3872         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3873         gdb mode.
3874
3875 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3876
3877         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3878         can be used to set breakpoints in gdb.
3879
3880         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3881         segment to an absolute address.
3882
3883 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3884
3885         * method-to-ir.c: Use the managed array allocator method if
3886         available.
3887
3888 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3889
3890         * aot-compiler.c : Fix the MSVC builds
3891
3892         Code is contributed under MIT/X11 license.
3893
3894 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3895
3896         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3897         avoid registering 1 symbol file per method with gdb.
3898
3899 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3900
3901         * mini-sparc.c: Fix the handling of enums with base type long.
3902
3903         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3904
3905         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3906         instead of using type->data.klass as the later doesn't work with generics.
3907
3908 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3909
3910         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3911         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3912         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3913         works differently now and we don't handle it in the JIT anymore.
3914
3915         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3916         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3917         the Thread class split.
3918
3919 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3920
3921         * driver.c: Don't run tests with the obsolete treeprop optimization.
3922
3923         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3924         variable volatile. Fixes #541577.
3925
3926         * basic-calls.cs: Add a new test.
3927
3928         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3929
3930 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3931
3932         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3933         work/required with recent iphone sdk versions.
3934
3935         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3936         structures.
3937
3938         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3939         in the VCALL decomposition code.
3940
3941 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3942
3943         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3944
3945         * basic.cs: Add a test.
3946
3947         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3948         generic invokes.
3949
3950         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3951         searches all the domains of the current thread.
3952
3953         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3954
3955 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3956
3957         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3958         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3959
3960         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3961         for non-jit trampolines.
3962
3963         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3964
3965         * aot-compiler.c (add_wrappers): Ditto.
3966
3967         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3968         the size of the param area used by dyn_call to 6 which covers the majority of
3969         methods.
3970
3971         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3972
3973         * mini-arm.c: Implement support for passing/receiving
3974         longs and receiving floats in the dyn_call code.
3975
3976         * mini-amd64.c: Implement support for receiving vtypes in registers in
3977         the dyn_call code.
3978
3979         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3980         the dyn_call code.
3981
3982 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3983
3984         * mini-arm.c (get_call_info): Return more precise information in
3985         ArgInfo->regtype.
3986         (dyn_call_supported): Use the information in CallInfo.
3987
3988         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3989
3990         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3991         code.
3992
3993         * mini-arm.c: Update after the dyn_call api changes.
3994
3995         * mini.c (mini_create_jit_domain_info): Register a destructor function
3996         for the runtime_invoke_hash.
3997
3998         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3999         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
4000         this function.
4001         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
4002         (dyn_call_supported): Simplify this by using get_call_info ().
4003         (mono_arch_dyn_call_free): New destructor function.
4004
4005         * generics.cs: Remove a printf.
4006
4007         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
4008
4009         * mini-arm.c: Add support for enum return values and passing a few arguments
4010         on the stack.
4011         
4012         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
4013         dyn invoke.
4014
4015         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
4016
4017         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
4018         the dynamic invoke wrappers.
4019
4020         * mini-arm.c: Implement OP_DYN_CALL for arm.
4021
4022         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
4023         supported by the dynamic runtime invoke wrapper.
4024
4025         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
4026         runtime invoke wrapper.
4027
4028         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
4029         if possible when running with full-aot.
4030
4031         * mini-ops.h: Add OP_DYN_CALL opcode.
4032
4033         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
4034         with dynamic arguments lists similar to libffi.
4035
4036 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
4037
4038         * method-to-ir.c: Fix the previous change on 64 bit platforms.
4039         
4040         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
4041         to NEWARR.
4042
4043         * iltests.il.in: Add a new test.
4044         
4045 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
4046
4047         * aot-compiler.c (add_generic_instances): Add more instances of
4048         GenericEqualityComparer.
4049
4050 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4051
4052         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
4053
4054 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4055
4056         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
4057         comments on some functions that now can fail.
4058
4059 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
4060
4061         * Makefile.am: Add Info.plist to EXTRA_DIST
4062
4063 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4064
4065         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
4066         static synchronized wrappers. Fixes #539500.
4067
4068 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
4069
4070         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
4071         properly.
4072
4073 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4074
4075         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
4076         lmf before calling filter clauses as well. Fixes #539550.
4077
4078         * exceptions.cs: Add a test.
4079         
4080 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
4081
4082         * aot-compiler.c (add_generic_class): Add instances of
4083         Array.GetGenericValueImpl as well.
4084
4085         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
4086         can be tested too.
4087
4088         * generics.cs: Add a fullaot linq test.
4089
4090 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
4091
4092         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
4093         reg r1 on arm.
4094
4095 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4096
4097         * mini-trampolines.c (mono_delegate_trampoline) : Call
4098           mono_cominterop_get_invoke if the delegate target object
4099           is a COM object.
4100
4101         Code is contributed under MIT/X11 license.
4102
4103 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
4104
4105         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
4106         internal call is defined outside platform code. Reduce code 
4107         duplication with existing [Method|Field]AccessException
4108
4109 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4110
4111         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
4112         if the return value is a small struct passed on regs.
4113
4114 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
4115
4116         * cpu-arm.md mini-arm.c: Remove unused opcodes.
4117
4118         * mini-codegen.c: Enable the cpu description validation for arm.
4119
4120 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
4121
4122         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
4123         test which depends on structs to objects.cs.
4124         
4125         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
4126         require object model related stuff working.
4127
4128         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
4129
4130         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
4131
4132         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
4133         against the instruction metadata in mini-ops.h. amd64 only for now.
4134
4135         * mini-ops.h: Fix some instruction descriptions.
4136
4137         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
4138         unused instructions.
4139
4140 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4141
4142         * exceptions.cs: Add a new test.
4143
4144 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4145
4146         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
4147
4148 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4149
4150         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
4151         skip empty phi opcodes.
4152         
4153         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
4154         correctly by zero extending after loads. Skip methods containing calls
4155         to the monitor enter/exit trampolines.
4156
4157         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
4158         when calling mono_thread_force_interruption_checkpoint ().
4159
4160         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
4161
4162         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
4163         64 bit thunks.
4164         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
4165
4166         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
4167         bootstrap could run.
4168
4169 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4170
4171         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
4172
4173 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4174
4175         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
4176         of the method to
4177         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4178         LLVM might be very short.
4179
4180         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
4181         in OP_THROW/RETHROW.
4182
4183         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4184         alignment on osx.
4185
4186 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4187
4188         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4189         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4190         LLVM might be very short.
4191
4192 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4193
4194         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4195         the alignment for the value of sp.
4196
4197 2009-09-01  Geoff Norton  <gnorton@novell.com>
4198
4199         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4200         managed wrappers in full aot.
4201
4202 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4203
4204         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4205
4206 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4207
4208         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4209
4210 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4211
4212         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4213
4214         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4215         saved info.
4216
4217         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4218
4219         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4220         depend on the info MonoMethodHeader which could be missing in IL stripped
4221         assemblies.
4222
4223 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4224
4225         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4226         they are only 4 byte aligned.
4227
4228 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4229
4230         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4231         was done previously, since using SP causes too many problems.
4232
4233         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4234         frames without a frame pointer works.
4235
4236         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4237         global register in methods with calls, since the calls can go through
4238         a static rgctx trampoline which doesn't save it.
4239
4240 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4241
4242         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4243
4244 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4245
4246         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4247
4248 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4249
4250         * method-to-ir.c: Fix warnings for uninitialized variables.
4251
4252 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4253
4254         * mini-exceptions.c:
4255         * aot-compiler.c: Fix printf warnings.
4256
4257 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4258
4259         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4260         Add GetGenericValueImpl<string>.
4261         
4262         * aot-compiler.c (add_generic_instances): Add instances of
4263         GenericEqualityComparer<T> for primitive types. Only emit the array
4264         wrappers into the mscorlib image.
4265
4266 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4267
4268         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4269         the methods_loaded array using amodule->info->nmethods.
4270
4271         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4272         (MONO_AOT_FILE_VERSION): Bump this.
4273
4274         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4275         to work.
4276
4277         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4278         MonoJitInfo doesn't belong to its methods aot image.
4279
4280 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4281
4282         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4283
4284         * mini-arm.c: Fix warnings.
4285         
4286         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4287
4288         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4289         supports it.
4290
4291 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4292
4293         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4294         avoid clobbering IP.
4295
4296         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4297         hold the trampoline argument, so its initial value is available during
4298         debugging.
4299
4300 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4301
4302         * exceptions-arm.c:
4303         * exceptions-hppa.c:
4304         * mini.c:
4305         * exceptions-s390x.c:
4306         * exceptions-mips.c:
4307         * exceptions-ppc.c:
4308         * exceptions-sparc.c:
4309         * exceptions-alpha.c:
4310         * aot-runtime.c:
4311         * mini-trampolines.c:
4312         * exceptions-x86.c:
4313         * exceptions-s390.c: add and use #define's instead of sizeof()
4314         for MonoJitInfo and MonoJitInfoTable.
4315
4316 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4317
4318         * tramp-arm.c:
4319         * tramp-amd64.c:
4320         * tramp-ppc.c:
4321         * tramp-x86.c: use a #define instead of sizeof() for a few
4322         structures that use a zero-length array.
4323
4324 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4325
4326         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4327         case when the method is dynamic. Fixes #529238.
4328
4329 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4330
4331         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4332         of asserting when a method is JIT compiled in full-aot mode.
4333
4334 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4335         
4336         Contributed under the terms of the MIT/X11 license by
4337         Jerry Maine <crashfourit@gail.com>.
4338         
4339         * fixed wrong dates in changelog.
4340
4341 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4342         
4343         Contributed under the terms of the MIT/X11 license by
4344         Jerry Maine <crashfourit@gail.com>.
4345
4346         * basic-simd.cs: added test for packed double square root.
4347         * cpu-amd64.md: added opcode info for packed double square root.
4348         * cpu-x86.md: added opcode info for packed double square root.
4349         * mini-ops.h: added IR opcode for packed double square root.
4350         * mini-x86.c: added IR to native translation code for packed double square root.
4351         * mini-amd64.c: removed todo for packed double square root.
4352         * simd-intrinsics.c: added method to IR opcode converstion for
4353         packed double square root.
4354
4355 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4356
4357         Contributed under the terms of the MIT/X11 license by
4358         Jerry Maine <crashfourit@gail.com>.
4359
4360         * mini-amd64.c: Added a change to help tell the difference as 
4361         to what perpose the xmm register is being used--mainly to help
4362         with debuging.
4363         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4364         (one used for special cases) xmm registers for both fp
4365         and simd ops. Added define to turn on new feature in the regalloc
4366         that allows fp and simd ops to share the xmm regs happily.
4367         * codegen.c: Added code to detect for which perpose an xmm reg is
4368         being used (fp or simd) and to translate back and forth to the
4369         correct logical reg bank (fp or simd) for 'spill load's.
4370
4371 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4372
4373         Contributed under the terms of the MIT/X11 license by
4374         Jerry Maine <crashfourit@gail.com>.
4375
4376         * basic-simd.cs: Added tests for stressing the regalloc when running with
4377         16 simd regs and when simd and fp ops share the same reg bank.
4378
4379 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4380
4381         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4382         in shared generic code, we might have to look up the class in the
4383         RGCTX.  If we use the class directly, compute its GC descriptor.
4384
4385 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4386
4387         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4388
4389 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4390
4391         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4392         check for errors. Fixed the case when the class with the Main
4393         method is broken.
4394
4395 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4396
4397         Contributed under the terms of the MIT/X11 license by
4398         Jerry Maine <crashfourit@gail.com>.
4399
4400         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4401
4402 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4403
4404         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4405
4406 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4407
4408         * method-to-ir.c: Fix naming of stelem and ldelem.
4409
4410 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4411
4412         * driver.c (main_thread_handler): Check that the assembly loaded
4413         matches the filename when doing AOT.
4414
4415 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4416
4417         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4418         call it anymore.
4419
4420         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4421         utils/mono-sigcontext.h).
4422
4423         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4424         #ifdef.
4425
4426 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4427
4428         * mini.c (mono_codegen):
4429         Call profiler hook to keep track of method code buffers.
4430
4431 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4432
4433         * method-to-ir.c: Invoke write barriers for the
4434         Interlocked.(Compare)Exchange JIT intrinsics.
4435
4436 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4437
4438         * Makefile.am (version.h): Fix issues when built out of tree.
4439         Remove some redundant 'grep's piped through 'sed's.
4440
4441 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4442
4443         This patch is contributed under the terms of the MIT/X11 license
4444
4445         * mini-ppc.c (mono_arch_output_basic_block):
4446         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4447         for bits 32-47 with signed load/store diplacements for bits
4448         48-63.  Use prefered base/offset order for indexed form.
4449         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4450         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4451         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4452         OP_LOADI2_MEMBASE): Same.
4453         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4454         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4455         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4456         indexed form.
4457         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4458         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4459         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4460         OP_LOADI1_MEMINDEX): Same
4461         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4462         OP_STORER8_MEMINDEX): Same
4463         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4464         computations.
4465         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4466         for bits 32-47 with signed load/store diplacements for bits
4467         48-63.  Use prefered base/offset order for indexed form.
4468
4469 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4470
4471 This patch is contributed under the terms of the MIT/X11 license
4472
4473         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4474         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4475         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4476         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4477         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4478         cfg->stack_usage to avoid size warnings.
4479         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4480         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4481         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4482         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4483         to convert.
4484         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4485         after code varible is initialized.
4486         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4487         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4488         (mono_arch_emit_epilog): 
4489         Move Use ppc_load32 for cfg->stack_usage to avoid size
4490         warnings.
4491
4492 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4493
4494         * method-to-ir.c: The write barrier doesn't do the store anymore,
4495         so we have always to emit it.  Also, emit the wbarrier after the
4496         store.
4497
4498 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4499
4500         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4501         for argument count 3 too.
4502
4503 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4504
4505         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4506         the caller handle the exceptions.
4507         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4508         method. Fixes #524498.
4509
4510 2009-07-22  Geoff Norton  <gnorton@novell.com>
4511
4512         * mini-exceptions.c: Fix build on ia64.
4513
4514 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4515
4516         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4517         barriers.
4518
4519 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4520
4521         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4522         code.
4523
4524 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4525
4526         * basic-simd.cs (Main): Pass args to the test driver.
4527
4528 2009-07-20  Geoff Norton  <gnorton@novell.com>
4529
4530         * mini-x86.h: Fix the x86 version guards to use Apple's
4531         properly defined macros.
4532
4533 2009-07-20  Geoff Norton  <gnorton@novell.com>
4534
4535         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4536         aligned access.
4537
4538 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4539
4540         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4541         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4542         the information which is needed for invokes, so only one locking+hash table
4543         lookup is needed.
4544
4545         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4546         
4547         * aot-compiler.c (add_generic_instances): Emit instances of 
4548         GenericComparer<T> for primitive types.
4549
4550 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4551
4552         * mini-posix.c: Fix linux build.
4553
4554 2009-07-19  Geoff Norton  <gnorton@novell.com>
4555
4556         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4557         mono_gdb_render_native_backtraces
4558         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4559         so we implement the sane semantics to the runtime here
4560         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4561         so we need to call it differently (mono_gdb_render_native_backtraces)
4562         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4563         here for default implementations.
4564         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4565         support Apple's weird syscall (SYS_fork) implementation and not busy
4566         loop in abort() on native crashes on OSX anymore.
4567
4568 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4569
4570         * aot-runtime.c (load_method): Change the handling of the
4571         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4572         are used.
4573
4574         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4575
4576 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4577
4578         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4579         seems to break the aot tests.
4580         
4581         * mini.c (mono_patch_info_equal): Fix the handling of 
4582         MONO_PATCH_INFO_RGCTX_FETCH.
4583
4584 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4585
4586         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4587
4588         * mini.c (mono_patch_info_hash): Fix the handling of 
4589         MONO_PATCH_INFO_INTERNAL_METHOD.
4590         (mono_patch_info_equal): Ditto.
4591
4592 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4593
4594         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4595         in a few places.
4596         
4597         * mini-llvm.c: Add some infrastructure for AOT support.
4598
4599 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4600
4601         * mini-llvm-cpp.c: Update to the latest llvm api.
4602         
4603         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4604         option to false to prevent llvm from installing signal handlers which
4605         trip up the gc.
4606         
4607 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4608
4609         * cpu-x86.md:
4610         * cpu-amd64.md: Revert previous change as those instructions
4611         take 2 separate arguments. Remember to read the arch docs more
4612         carefully next time.
4613
4614 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4615
4616         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4617
4618 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4619
4620         * mini-ppc.c: exploit multiple load/store units if available (rest of
4621         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4622         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4623
4624 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4625
4626         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4627         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4628
4629 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4630
4631         * cpu-x86.md: Fix missing clobbering from trancendental simd
4632         ops.
4633
4634         * cpu-amd64.md: Same.
4635
4636 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4637
4638         Contributed under the terms of the MIT/X11 license by
4639         Jerry Maine <crashfourit@gail.com>.
4640
4641         * basic-simd.cs: Added tests for single and doulble indexers.
4642
4643         * cpu-amd64.md: Added simd opcode information.
4644
4645         * mini-amd64.c: Added IR to native simd generation code.
4646         Added simd register names and function that returns them.
4647
4648         * mini-amd64.h: Added marcos to turn on simd code compilation in
4649         amd64. Added max simd register count marco. Added caller/callee
4650         register mask marcos. Added marcos to use simd register bank.
4651
4652         * mini.h: Added helper marco for shufling dwords and simple
4653         floats.
4654
4655 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4656
4657         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4658
4659         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4660
4661         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4662         the length of the native code as well.
4663
4664         * basic-simd.cs: Add a test for #521662.
4665
4666 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4667
4668         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4669
4670 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4671
4672         * mini.c: Register function for getting the IP from a signal
4673         context with metadata.
4674
4675 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4676
4677         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4678         call a generic class init trampoline if needed. Fixes #519336.
4679
4680         * generics.cs: Add a test.
4681         
4682 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4683
4684         * method-to-ir.c: When doing a call which might be remote from
4685         shared generic code to other shared code with open type arguments,
4686         get the remoting invoke wrapper from the RGCTX and do an indirect
4687         call to it.
4688
4689 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4690
4691         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4692         after the unbox trampoline in the full-aot case.
4693
4694 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4695         
4696         * mini.c: Move initialization of jit_mutex before debugger initialization
4697         
4698         to avoid crashes.
4699         
4700         
4701         * Info.plist: added Info.plist and link flag to enable the mono executable
4702         to access other processes. Requires codesigning of the executable to work.
4703         
4704         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4705         
4706         compile on OS X.
4707         
4708
4709 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4710
4711         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4712
4713 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4714
4715         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4716         when the generic instance is an instantiation of a subclass of the
4717         methods class. Fixes #517166.
4718
4719 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4720
4721         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4722         code.
4723
4724         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4725         AOTed code.
4726
4727         * CMakeLists.txt: Add minimal support for installation.
4728
4729 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4730
4731         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4732         determine whenever a method is directly callable to a separate function.
4733
4734         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4735         needed ones as a result of the previous change.
4736
4737         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4738         type of register arrays.
4739
4740         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4741         type of register arrays.
4742
4743 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4744         
4745         Contributed under the terms of the MIT/X11 license by
4746         Jerry Maine <crashfourit@gail.com>.
4747
4748         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4749
4750 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4751
4752         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4753
4754 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4755
4756         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4757         dump of structure return value. Fix some formatting.
4758         * cpu-s390x.md: Fix lengths of instruction sequences.
4759         * mini-s390.c: Minor formatting changes.
4760
4761 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4762
4763         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4764         Use sigaction on freebsd as well.
4765
4766 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4767
4768         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4769         uses #ifdef on it.
4770         
4771         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4772
4773 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4774
4775         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4776
4777 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4778
4779         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4780
4781 2009-06-20  Martin Baulig  <martin@ximian.com>
4782
4783         * debug-mini.c
4784         (MonoDebuggerThreadFlags): New enum typedef.
4785         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4786         (mono_debugger_thread_created): Added `gpointer func' argument;
4787         initialize the new `thread_flags' field.
4788
4789 2009-06-18  Martin Baulig  <martin@ximian.com>
4790
4791         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4792         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4793
4794         * debug-debugger.c
4795         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4796         flag in `MONO_DEBUGGER__info.runtime_info'.
4797
4798         * driver.c
4799         (mono_main): Call mini_debugger_set_attach_ok() if generics
4800         sharing is disabled.
4801
4802 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4803
4804         * aot-compiler.c (add_wrappers): Fix a warning.
4805
4806         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4807         the ppc load/store macro changes.
4808
4809 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4810
4811         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4812
4813         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4814         not just the got symbol.
4815
4816         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4817         on ppc.
4818
4819         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4820         ppc.
4821         
4822         * aot-compiler.c: Remove some fixmes.
4823
4824         * driver.c (mono_main): Print a helpful message when cross-compiling.
4825
4826         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4827
4828         * method-to-ir.c (initialize_array_data): Do the optimization if the
4829         target byte order is little endian, instead of the host byte order.
4830
4831         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4832         wrappers into the mscorlib image, Emit a unique plt symbol for each
4833         image, emit symbols for plt entries.
4834
4835         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4836         a .size directive.
4837         
4838 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4839
4840         * aot-compiler.c (add_wrappers): Avoid calling 
4841         mono_marshal_get_type_info () since it can assert for some types.
4842
4843         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4844         ldtoken are used inside wrappers.
4845
4846         * helpers.c: Add support for prefixing tools with the arch name.
4847
4848         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4849         quantities when using ilp32.
4850
4851         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4852         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4853
4854         * image-writer.c: Use .long on ilp32.
4855
4856         * aot-compiler.c: Use 32 bit loads on ilp32.
4857         
4858 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4859
4860         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4861
4862         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4863
4864         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4865
4866         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4867         second got slot of every aot image.
4868         
4869         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4870         aot on platforms with function pointers.
4871
4872         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4873         support for aot/full aot on ppc/ppc64.
4874         
4875         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4876         arguments which are needed on ppc.
4877
4878         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4879         argument.
4880
4881         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4882         
4883         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4884
4885         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4886
4887         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4888
4889         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4890
4891 2009-06-17  Geoff Norton  <gnorton@novell.com>
4892
4893         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4894
4895 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4896
4897         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4898         to control whenever the dwarf writer is in xdebug or aot mode.
4899         (emit_class_dwarf_info): Use a separate abbrev for structures without
4900         children.
4901
4902         * aot-compiler.c: Pass the appending parameter to 
4903         mono_dwarf_writer_create ().
4904
4905         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4906         falls through to its next bblock. Fixes #513931.
4907
4908         * iltests.il: Add a test.
4909
4910         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4911         infor even if emit_line is FALSE, as the apple linker seems to require it.
4912
4913         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4914
4915         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4916         gcc does.
4917         (emit_fde): Ditto.
4918
4919 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4920
4921         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4922         mips build.
4923
4924 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4925
4926         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4927         'has_call_handler' fields.
4928
4929         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4930
4931         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4932         first bblock if not needed. Fixes #512790.
4933         
4934 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4935
4936         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4937         
4938         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4939         wrappers.
4940
4941         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4942         remoting-invoke-with-check wrappers, which are not needed when running with
4943         full-aot, since it doesn't support remoting.
4944         
4945 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4946
4947         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4948
4949         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4950         method info, it is not used anymore.
4951
4952         * mini.h: Bump AOT file format version.
4953         
4954         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4955         word smaller.
4956
4957         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4958         change above.
4959         
4960         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4961
4962         * mini.h: Bump AOT file format version.
4963         
4964 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4965
4966         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4967         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4968         iphone.
4969
4970         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4971         of CKFINITE and FBGE for VFP.
4972
4973 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4974
4975         * aot-compiler.c: Don't align code to 16 bytes on arm.
4976         
4977         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4978         before the methods they belong to.
4979
4980         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4981         the full-aot case if possible, since the trampoline will be called right 
4982         away.
4983
4984         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4985         trampolines to 1024 after the change above.
4986
4987         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4988         trampoline to save 8 bytes per trampoline.
4989
4990         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4991         change above.
4992
4993 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4994
4995         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4996
4997 2009-06-08  Martin Baulig  <martin@ximian.com>
4998
4999         * debug-mini.c
5000         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
5001         (_mono_debugger_throw_exception): Don't make this static.
5002         (_mono_debugger_unhandled_exception): Likewise.
5003         (mono_debugger_handle_exception): Moved to mini-exceptions.c
5004
5005         * debug-mini.c
5006         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
5007         (_mono_debugger_throw_exception): Add function prototype.
5008         (_mono_debugger_unhandled_exception): Likewise.
5009
5010         * mini-exceptions.c
5011         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
5012         arg; return the first exception handler if the exception is caught
5013         and we're running inside the debugger.
5014         (mono_debugger_handle_exception): Moved here from debug-mini.c;
5015         improve exception handle inside runtime-invoke, check whether the
5016         exception is actually caught in the method being invoked and not
5017         by the runtime-invoke-wrapper.
5018
5019 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
5020
5021         * image-writer.c: Improve support for the osx assembler.
5022
5023         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
5024         support them.
5025
5026 2009-06-08  Martin Baulig  <martin@ximian.com>
5027
5028         * debug-mini.c
5029         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
5030         (_mono_debugger_throw_exception): Don't make this static.
5031         (_mono_debugger_unhandled_exception): Likewise.
5032         (mono_debugger_handle_exception): Moved to mini-exceptions.c
5033
5034         * debug-mini.c
5035         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
5036         (_mono_debugger_throw_exception): Add function prototype.
5037         (_mono_debugger_unhandled_exception): Likewise.
5038
5039         * mini-exceptions.c
5040         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
5041         arg; return the first exception handler if the exception is caught
5042         and we're running inside the debugger.
5043         (mono_debugger_handle_exception): Moved here from debug-mini.c;
5044         improve exception handle inside runtime-invoke, check whether the
5045         exception is actually caught in the method being invoked and not
5046         by the runtime-invoke-wrapper.
5047
5048 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
5049
5050         * image-writer.c (append_subsection): Don't align subsections of the
5051         debug_line section as a workaround.
5052
5053         * dwarfwriter.c: Emit line number info in the AOT case as well.
5054
5055 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
5056
5057         This patch is contributed under the terms of the MIT/X11 license
5058
5059        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
5060        code_len <= code_size
5061
5062 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
5063
5064         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
5065
5066 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5067
5068         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
5069         invoke wrappers, we now use trampolines instead.
5070
5071 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5072
5073         * mini-darwin.c: The exception thread must not be registered with
5074         the GC.
5075
5076 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5077
5078         * mini-gc.c: Disable the code because it makes SGen crash.
5079
5080 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
5081
5082         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
5083         instead of asserting.
5084
5085 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5086
5087         * aot-compiler.c (mono_compile_assembly): Move the creation of the
5088         output file after the code has been compiled.
5089
5090 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
5091
5092         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
5093
5094 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5095
5096         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
5097         entries distinction to simplify the code.
5098
5099         * mini.h: Bump AOT file format version.
5100         
5101 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
5102
5103         * objects.cs: Fix the signature of one of the tests.
5104
5105         * mini.c (mini_create_ftnptr): New helper function, moved here from
5106         object.c.
5107         (mini_get_addr_from_ftnptr): Ditto.
5108         (mini_init): Install the new helpers.
5109
5110 2009-05-28  Martin Baulig  <martin@ximian.com>
5111
5112         Correctly initialize the debugger when embedding Mono.
5113
5114         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
5115         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
5116         see documentation in mini_debug_running_inside_mdb().
5117
5118         * debug-debugger.c
5119         (mini_debug_running_inside_mdb): New function to check whether
5120         we're running inside mdb.
5121
5122         * mini.c (mini_init): Call mini_debugger_init() if we're running
5123         inside the debugger.
5124
5125         * driver.c (mono_main): Moved the call to mini_debugger_init()
5126         into mini_init() to make this work when embedding Mono.
5127
5128         * debug-debugger.c (mini_debugger_init): Warn about duplicate
5129         calls to mini_debugger_init().
5130
5131         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
5132         mono_debugger_main() -> mini_debugger_main() and put them inside a
5133         `MONO_DEBUGGER_SUPPORTED' conditional.
5134
5135 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
5136
5137         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
5138         this is no longer in use.
5139         * mini.h: Same.
5140
5141 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
5142
5143         * mini-sparc.c (add_outarg_load): Fix the sparc build.
5144
5145         * aot-compiler.c (emit_method_code): Always write out C style symbols for
5146         methods.
5147
5148 2009-05-27  Martin Baulig  <martin@ximian.com>
5149
5150 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5151
5152         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
5153         long_conv_to_r_un to 64 bits.
5154
5155         * cpu-x86.md: Increase the instruction size due to the changes.
5156
5157         * iltests.il.in: Add regression test.
5158
5159         Fixes #467201.
5160
5161 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5162
5163         * objects.cs: Move the previous test from basic.cs to here.
5164
5165 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5166
5167         * basic.cs: Add regression test for #506915.
5168
5169 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5170
5171         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
5172         optimization we must check the bb of the first byte of stobj as
5173         it's the only one set in cil_offset_to_bb.
5174
5175         Fixes #506915.  
5176
5177 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5178
5179         * image-writer.c: Fix pointer directive on ppc64.
5180
5181 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
5182
5183         * image-writer.c (asm_writer_emit_section_change): Avoid using
5184         .bss subsections on ppc too.
5185
5186 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5187
5188         * image-writer.c: Fix the definition of TARGET_ASM_....
5189         
5190         * image-writer.c: Fix the emission of assembler directives in the last
5191         change.
5192
5193         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5194         exception throwing code to accomodate ppc64.
5195
5196         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5197         size to work on ppc64 too.
5198
5199         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5200         too.
5201
5202         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5203         the assembler dialect instead of using platform specific defines.
5204
5205 2009-05-22  Geoff Norton  <gnorton@novell.com>
5206
5207         * mini-arm.c (get_call_info): If a structure is split between the stack
5208         and argument registers, we should not advance the stack pointer by the entire
5209         native size, but just by the amount that spilled.
5210
5211 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5212
5213         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5214         correctly.
5215
5216 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5217
5218         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5219         wrappers normally.
5220         
5221         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5222         methods so wrapper don't get added twice.
5223         (add_generic_instances): Don't add methods of arrays.
5224
5225         * generics.cs: Mark one test as !FULLAOT.
5226
5227 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5228
5229         * mini-x86.c (emit_move_return_value): Remove unused vars.
5230
5231 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5232
5233         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5234         decomposing 8 bytes structs into a LCALL.
5235
5236         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5237         pointer for where to store the returned regs.
5238
5239         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5240         state the concern.
5241
5242         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5243
5244 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5245
5246         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5247         without getenv.
5248
5249 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5250
5251         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5252
5253         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5254         generics.
5255
5256 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5257
5258         * local-propagation.c (mono_local_cprop): Avoid local propagation
5259         across paired add/sub if the first instruction dest reg is it's
5260         source reg. For example:
5261
5262         int_add_imm R12 <- R12 [1] clobbers: 1
5263         int_sub_imm R42 <- R12 [1] clobbers: 1
5264
5265         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5266         maintain the math identify.
5267
5268         Fixes #505375.
5269
5270 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5271
5272         * Makefile.am: avoid going on the network just to get the revision,
5273         use git log instead
5274
5275 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5276
5277         Fixed estimate for short branches on amd64 (they were off mark, and
5278         enabling call prolog-epilog instrumentations caused assertions).
5279         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5280         estimate for the maximum length of this basic block.
5281         * mini-amd64.c:
5282         - mono_arch_emit_prolog: compute max_length for each basic block
5283           (instead of max_offset), and inflate size estimate also for entry bb
5284           in case of code instrumentation.
5285         - mono_arch_output_basic_block: get rid of "cpos" (the current
5286           estimated "position" in the code), and always use "offset" instead,
5287           which is accurate; at the beginning of the function quickly recompute
5288           max_offset for all the remaining blocks, starting from the current
5289           cfg->code_len (which is correct, and not estimated) and using the
5290           estimated block lengths computed previously.
5291
5292 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5293
5294         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5295         functions, it is already done in the caller.
5296
5297         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5298
5299         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5300         MONO_ARCH_GSHARED_SUPPORTED define.
5301
5302         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5303
5304         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5305         function.
5306
5307 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5308
5309         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5310         call to mono_marshal_get_rgctx_invoke ().
5311
5312         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5313         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5314         gshared use the static rgctx trampolines now.
5315         
5316         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5317         platform supports it.
5318
5319 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5320
5321         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5322
5323         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5324
5325 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5326
5327         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5328
5329         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5330         for ppc.
5331
5332 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5333
5334         Made it possible for mono_arch_instrument_epilog to preserve
5335         argument registers, otherwise instrumenting the "epilogue" before
5336         a tail call would clobber them.
5337         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5338         if like mono_arch_instrument_epilog but with an additional parameter
5339         that states if argument registers must be preserved.
5340         * mini.c: implemented mono_arch_instrument_epilog as a call to
5341         mono_arch_instrument_epilog_full without asking to preserve argument
5342         registers (this makes the existing code work as usual).
5343         * mini-amd64.c:
5344         - mono_arch_instrument_epilog: add parameter to transform it into
5345         mono_arch_instrument_epilog_full, and preserve argument registers
5346         when required.
5347         - mono_arch_output_basic_block, OP_TAILCALL case: call
5348         mono_arch_instrument_epilog_full.
5349         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5350         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5351         only transformed mono_arch_instrument_epilog into
5352         mono_arch_instrument_epilog_full.
5353
5354 2009-05-15  Geoff Norton  <gnorton@novell.com>
5355
5356         * mini-darwin.c: This works on arm now.
5357
5358 2009-05-14  Geoff Norton  <gnorton@novell.com>
5359
5360         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5361         embedding api.
5362
5363 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5364
5365         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5366         label names.
5367
5368         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5369         wrappers during full aot mode correctly.
5370
5371         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5372         methods correctly.
5373
5374         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5375         mono_metadata_type_hash ().
5376
5377 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5378
5379         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5380         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5381         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5382         Removed MONO_INST_BRLABEL from the instruction flags, and the
5383         remaining code that used it, because we do not support branches inside
5384         basic blocks (and branch target labels) anymore.
5385         * Makefile.am: As part of the above cleanup, remove reference to
5386         BURG files which don't exist anymore.
5387
5388 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5389
5390         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5391         osx.
5392
5393         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5394         to use mono_arch_throw_corlib_exception.
5395
5396         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5397         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5398
5399         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5400         domain mempool.
5401
5402         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5403
5404         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5405         for the got to make debugging easier and to avoid confusing it with the
5406         system got.
5407         
5408         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5409         method so a breakpoint can be set when using gdb.
5410
5411 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5412
5413         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5414         on mono_method_get_imt_slot ().
5415
5416         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5417         num_decodes variables.
5418
5419         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5420         change as it doesn't seem to work.
5421         
5422         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5423         wrappers.
5424
5425 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5426
5427         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5428         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5429
5430         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5431         builder when using full aot.
5432
5433         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5434         here, it is already handled.
5435         
5436         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5437         correctly for IMT.
5438
5439         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5440
5441         * mini-arm.h: Enable IMT for full aot.
5442         
5443         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5444         arch doesn't support it.
5445
5446         * mini.c (mini_init): Don't disable IMT for full aot if the
5447         architecture supports it.
5448
5449         * mini.h (MonoAotTrampoline): New enum containing the different types
5450         of 'numerous' trampolines.
5451         (MONO_AOT_FILE_VERSION): Bump this.
5452
5453         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5454         static rgctx trampolines. Add support for full-aot IMT thunks.
5455
5456         * mini-amd64.h: Enable IMT for full aot.
5457
5458         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5459         to exclude tests belonging to a category.
5460
5461         * generics.cs: Mark some tests with a !FULLAOT category.
5462
5463         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5464         generics tests.
5465
5466 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5467
5468         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5469         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5470         (emit_plt): Fix a warning.
5471
5472 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5473
5474         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5475         back into aot-compiler.c to a place where the other functions shared by
5476         the runtime and aot compiler are.
5477         
5478         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5479         as done previously, instead of in MonoAotFileInfo, since pointers might have
5480         alignment requirements.
5481
5482         * mini.h: Bump AOT file format version.
5483
5484 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5485
5486         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5487         that is used at runtime from the aot-compiler.c, this makes it
5488         work on setups that remove the AOT compiler from the output
5489         image. 
5490
5491 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5492
5493         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5494         PPC.
5495
5496         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5497
5498         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5499
5500         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5501         stuff to mono_arch_decompose_long_opts ().
5502         (mono_decompose_opcode): Remove some dead code.
5503
5504 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5505
5506         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5507         cmethod can be null for quite a some reasons.
5508
5509 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5510
5511         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5512
5513 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5514
5515         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5516
5517 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5518
5519         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5520         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5521         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5522         calls returning structures by addr on amd64.
5523
5524         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5525
5526         * iltests.il.in: Restructure the tail call tests a bit.
5527         
5528 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5529
5530         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5531         for virtual methods too.
5532
5533 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5534
5535         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5536         due to regression in verifying System.dll.
5537
5538 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5539
5540         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5541         in dynamic methods.
5542
5543         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5544         instances.
5545
5546         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5547         g_str_hash () which can change.
5548
5549         * driver.c (mini_regression): Disable optimizations not supported by
5550         the cpu. Fixes #500019.
5551
5552         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5553         build.
5554
5555 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5556
5557         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5558         to the latest LLVM code.
5559
5560 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5561
5562         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5563
5564 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5565
5566         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5567         x86/amd64.
5568
5569         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5570         no longer saving offsets, so just save the patch types along with the other
5571         info.
5572         * aot-runtime.c (load_patch_info): Update after the changes to 
5573         encode_patch_list ().
5574         (decode_got_entry): Removed, merged into load_patch_info ().
5575         (is_shared_got_patch): Removed, call the same function from
5576         aot-compiler.c.
5577
5578         * mini.h: Bump aot file format version.
5579         
5580         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5581         half-finished no-dlsym code.
5582
5583         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5584         option.
5585
5586         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5587         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5588
5589 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5590
5591         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5592         buffer length to work with AOT code.
5593
5594         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5595         ldfld/stfld opcodes.
5596
5597         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5598         as it is not used.
5599
5600         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5601
5602         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5603
5604         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5605         LLVM API.
5606
5607         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5608         if needed. Don't decompose long operations when using llvm.
5609
5610 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5611
5612         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5613         PAGESIZE constant.
5614
5615         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5616
5617 2009-05-03  Martin Baulig  <martin@ximian.com>
5618
5619         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5620         mono_debugger_insert_method_breakpoint() since the class init
5621         handler we're inserting at the top of the method already gives us
5622         a notification.
5623
5624 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5625
5626         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5627         to mono_arch_decompose_long_opts () for x86 and arm.
5628
5629 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5630
5631         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5632         TARGET_AMD64 here.
5633
5634 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5635
5636         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5637         JIT code.
5638
5639 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5640
5641         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5642         number of trampolines used in full-aot mode.
5643
5644         * aot-compiler.c: Add an ntrampolines option to set the number of 
5645         trampolines emitted in full-aot mode.
5646
5647 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5648
5649         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5650         a volatile load. Get rid of get_tempname (), llvm assigns names
5651         automatically.
5652
5653         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5654         builder function.
5655
5656         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5657         a value.
5658
5659         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5660         level 1.
5661
5662         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5663         to the same register as a fixed sreg2. Fixes #497271.
5664
5665         * iltests.il.in: Add a new test.
5666
5667 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5668
5669         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5670         stack, since pushes complicate exception handling.
5671
5672         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5673         the stack if they are passed using moves.
5674
5675         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5676
5677         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5678         when using llvm.
5679
5680         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5681         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5682         of FMOVE if it is an R4.
5683
5684 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5685
5686         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5687
5688         * mini.h (LLVMCallInfo): New structure to store calling convention 
5689         information for the LLVM back end similar to the CallInfo structures in 
5690         the back-ends.
5691
5692         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5693         call information in a format usable by LLVM.
5694         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5695
5696         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5697         mono_llvm_emit_call () when compiling using LLVM.
5698
5699         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5700         comments to all functions. Fix memory leaks. Add a public init/cleanup
5701         function.
5702
5703         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5704
5705         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5706         mono_array_new_va () jit icall.
5707         
5708 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5709
5710         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5711         multiple machine description files to be specified.
5712         * mini-ops.h: fixes for cross-compilation.
5713
5714 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5715
5716         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5717         some porting work.
5718
5719 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5720
5721         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5722         to prevent asserts in various passes. Fixes #497220.
5723
5724 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5725
5726         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5727         a racy assert.
5728
5729         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5730         table to avoid duplicates.
5731
5732         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5733         
5734         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5735         option is used.
5736
5737 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5738
5739         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5740         is for method or field access.
5741
5742 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5743
5744         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5745         a Value to stdout.
5746
5747         * mini-llvm.c (mono_llvm_emit_method): Use it.
5748         
5749         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5750         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5751         on volatile values.
5752
5753         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5754         synchronized methods.
5755
5756         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5757
5758         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5759
5760         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5761         OP_LOADI8_MEM.
5762
5763         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5764         allowing some options to be set dynamically.
5765
5766 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5767
5768         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5769         unconditional branch.
5770
5771         * mini.h (MonoTrampolineType): Add new trampoline type 
5772         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5773         compiled code.
5774
5775         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5776         function.
5777
5778         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5779         creation function.
5780
5781         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5782         is enabled. Instead, use the llvm vcall trampoline.
5783         
5784         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5785
5786         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5787         
5788         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5789         functions.
5790
5791         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5792         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5793
5794         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5795         OP_IA64_CSET opcode.
5796
5797         * mini.c: Fix a warning.
5798
5799         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5800         THROW to the appropriate llvm type.
5801
5802 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5803
5804         * mini.c (mini_method_compile): Add statistics for methods JITted
5805         with/without LLVM.
5806
5807 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5808
5809         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5810         OP_IA64_CMP_<cond>_IMM opcodes.
5811
5812 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5813
5814         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5815         corlib exceptions.
5816
5817         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5818         correctly.
5819
5820         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5821         GENERICINST.
5822
5823 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5824
5825         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5826
5827 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5828
5829         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5830         support.
5831
5832         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5833         rgctx invoke trampolines for x86.
5834
5835         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5836         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5837         (mono_arch_get_vcall_slot): Simplify this.
5838
5839 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5840
5841         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5842         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5843
5844 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5845
5846         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5847         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5848
5849         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5850
5851         * liveness.c (visit_bb): Remove a needless assert.
5852
5853 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5854
5855         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5856         full aot support to the arch specific code.
5857
5858         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5859
5860         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5861
5862         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5863         
5864         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5865         collect information about the delegate invoke impl trampolines.
5866
5867         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5868         to save trampolines during full-aot mode.
5869
5870         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5871         creation function which returns a trampoline which sets the rgctx
5872         argument.
5873         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5874         wrapper if possible.
5875         (mono_delegate_trampoline): Ditto.
5876
5877         * mini.c (mono_jit_runtime_invoke): Ditto.
5878
5879         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5880         
5881         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5882
5883         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5884         
5885 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5886
5887         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5888         just setting the opcode to OP_NOP.
5889
5890 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5891
5892         * mini.c (mini_method_compile): Put the last change inside an 
5893         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5894         
5895         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5896         and extend live ranges to cover the whole method when using xdb.
5897
5898         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5899         do it in the trampolines.
5900
5901         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5902         needed.
5903
5904         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5905         
5906         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5907         call code in full-aot mode since IMT is disabled there.
5908         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5909         new JIT no longer has that restriction.
5910
5911         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5912
5913         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5914         a more compact format.
5915         (mono_aot_wrapper_name): New function to return a unique name for a
5916         wrapper method, also used by the AOT runtime.
5917
5918         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5919         aot-compiler.c.
5920
5921         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5922         when a ICollection<T> etc is encountered.
5923         (add_generic_instances): Process method arguments/locals too.
5924         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5925         trampoline names.
5926
5927         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5928         
5929 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5930
5931         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5932
5933         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5934
5935         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5936         representing the result of the decomposition. Nullify instructions
5937         instead of setting them to OP_NOP since nops can't have registers
5938         set.
5939
5940 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5941
5942         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5943         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5944         info. Strip 'mapping symbols' on ARM.
5945
5946         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5947         
5948         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5949         this with the native genmdesc.
5950
5951 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5952
5953         * aot-runtime.c:  Fixing the MSVC build.
5954
5955         Code is contributed under MIT/X11 license.
5956
5957 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5958
5959         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5960         JITted code depends on it.
5961
5962 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5963
5964         * aot-compiler.c: Use new MonoGenericParam accessors.
5965
5966 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5967
5968         Reduce memory usage and improve correctness wrt MonoGenericParam
5969         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5970         handing.  Avoid allocating MonoGenericParams, but use the ones in
5971         the container itself.
5972
5973 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5974
5975         * tasklets.c: Return exceptions in the out argument.
5976
5977 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5978
5979         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5980         opcode. Use pointer types in more places instead of casting them to 
5981         integers.
5982
5983         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5984         optimizations.
5985         (mono_llvm_optimize_method): New helper function to optimize a method.
5986
5987         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5988         widening code so it could be called from more places.
5989         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5990         code paths in the call opcodes.
5991
5992 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5993
5994         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5995
5996 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5997
5998         * dwarfwriter.c: Use _ to separate class name 
5999         components as gdb can't handle '.'. Represent reference variables
6000         as 'class <NAME>&'.
6001         
6002         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
6003
6004         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
6005         
6006         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
6007
6008         * gc-test.cs: New file with GC stack marking tests.
6009         
6010         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
6011         negative numbers for vfp.
6012
6013         * basic-float.cs: Add a test.
6014         
6015 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
6016
6017         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
6018
6019 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
6020
6021         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
6022         part of tasklet/continuation support.
6023
6024 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
6025
6026         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
6027         amd64 opcodes inside an ifdef.
6028
6029         * dwarfwriter.c: Emit inheritance information for classes, emit fields
6030         of complex types.
6031         
6032         * dwarfwriter.c (emit_type): Emit the class info for classes.
6033
6034 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
6035
6036         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
6037
6038         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
6039
6040         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
6041
6042         * ssa.c (mono_ssa_compute): Fix some memory leaks.
6043
6044 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
6045
6046         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
6047
6048         * mini-llvm.c: Update comments.
6049
6050         * mini.h (COMPILE_LLVM): New macro.
6051
6052         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
6053
6054         * ssa.c (mono_ssa_compute): Ditto.
6055         
6056         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
6057         the unwind ops from a DWARF FDE.
6058
6059         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
6060         methods by extracting the dwarf unwind ops from the unwind info generated
6061         by LLVM.
6062         
6063         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
6064         calls.
6065
6066         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
6067         addressing modes.
6068
6069 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
6070
6071         * Makefile.am (llvm_sources): Enable this.
6072
6073         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
6074         failing back to the JIT if something cannot be handled.
6075
6076         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
6077         compiling with LLVM.
6078
6079         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
6080         compiling with LLVM.
6081
6082         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
6083         compiling with LLVM.
6084
6085         * mini-ops.h: Add a few opcodes needed by LLVM.
6086
6087         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
6088         has no unwind info.
6089
6090         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
6091         backend.
6092
6093         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
6094
6095         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
6096
6097 2009-04-01  Mark Probst  <mark.probst@gmail.com>
6098
6099         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
6100         ridiculously large methods.
6101
6102 2009-03-31  Martin Baulig  <martin@ximian.com>
6103
6104         * debug-debugger.c (debugger_remove_breakpoint): Call
6105         mono_debugger_remove_class_init_callback ().
6106
6107 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
6108
6109         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
6110         right before emitting code, not at the start.
6111
6112         * mini.c (mono_postprocess_patches): Extract this into a separate function
6113         from mono_codegen ().
6114
6115         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
6116         byref types correctly.
6117
6118 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
6119
6120         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
6121         by the last change.
6122
6123 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
6124
6125         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
6126         indirect calls, this avoids problems where get_vcall_slot () would get
6127         confused by the native code for the instruction preceeding the call.
6128         (mono_arch_get_vcall_slot): Simplify this.
6129         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
6130
6131         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
6132         register allocator now seems to depend on them instead of the data in
6133         cpu-<ARCH>.md.
6134
6135         * mini.c (mini_method_compile): Throw the correct type of exception if
6136         mono_method_get_header () fails because of a loading error.
6137
6138 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
6139
6140         * mini.c (mini_method_compile): Clear the loader error if the method
6141         header cannot be decoded.
6142
6143         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
6144         interface methods on proxies correctly.
6145
6146         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
6147         this argument for vtype methods. Add precise liveness info for arguments.
6148
6149         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
6150         LIVERANGE_START/END opcodes.
6151
6152         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
6153         for arguments and values in registers.
6154
6155 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
6156
6157         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
6158         return a valuetype. Fixes #487518.
6159
6160         * iltests.il: Add a test.
6161         
6162         * aot-compiler.c: Use mono_thread_create () to create helper threads.
6163
6164         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
6165         closed over a null reference correctly.
6166
6167 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6168
6169         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
6170
6171 2009-03-25  Mark Probst  <mark.probst@gmail.com>
6172
6173         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
6174         allocated to the same registers as fixed sregs.
6175
6176 2009-03-24  Mark Probst  <mark.probst@gmail.com>
6177
6178         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
6179         ATOMIC_CAS_IMM ops.
6180
6181         * method-to-ir.c: Handle more cases for
6182         Interlocked.CompareExchange.
6183
6184         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6185         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6186         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6187
6188 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6189
6190         * aot-runtime.c (decode_method_ref): Fix a warning.
6191
6192         * unwind.c (mono_unwind_frame): Ditto.  
6193
6194 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6195
6196         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6197         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6198
6199         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6200         fix the handling of large values in the ALU_PC_G0_NC relocation.
6201
6202 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6203
6204         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6205
6206 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6207
6208         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6209         ops.
6210
6211 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6212
6213         * method-to-ir.c: MINI_OP3 needs a comma.
6214
6215         * method-to-ir.c, mini.h, mini.c: Remove
6216         mono_init_op_sreg_counts ().
6217
6218 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6219
6220         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6221         OP_JMP.
6222         
6223         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6224         assertion.
6225
6226         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6227
6228         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6229         code somewhat.
6230
6231 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6232
6233         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6234         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6235         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6236         operations.
6237
6238 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6239
6240         * driver.c: Change location of gc_wrapper.h.
6241
6242         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6243         inside finally clauses correctly. Fixes #485721.
6244
6245         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6246         after the change above.
6247
6248         * exceptions.cs: Add a test.
6249         
6250 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6251
6252         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6253
6254         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6255         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6256         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6257
6258         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6259         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6260
6261 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6262
6263         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6264         Simplify logic for ensure_method_is_allowed_to_call_method. 
6265         Handle wrappers on callers.
6266
6267 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6268
6269         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6270         them don't run yet.
6271
6272         * basic-simd.cs: Fix the names of some test methods.
6273
6274 2009-03-18  Geoff Norton  <gnorton@novell.com>
6275
6276         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6277
6278 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6279
6280         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6281
6282 2009-03-17  Jb Evain  <jbevain@novell.com>
6283
6284         * driver.c: remove now uneeded call to mono_gc_base_init before
6285         mono_profiler_load.
6286
6287 2009-03-17  Jb Evain  <jbevain@novell.com>
6288
6289         * dwarfwriter.c (token_handler): handle more cases.
6290
6291 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6292
6293         * method-to-ir.c: Remove more dead code (that was required only
6294         because of method_is_safe). Fix compiler warnings.
6295
6296 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6297
6298         * method-to-ir.c: Remove unneeded/useless method_is_safe
6299         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6300
6301 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6302
6303         * mini.c (mini_method_compile): Print the method been compiled with
6304         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6305         for people not familiar with the runtime.
6306
6307 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6308
6309         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6310         a managed object which is later put into a GList. Return its class instead.
6311
6312         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6313         stack slots when using sgen.
6314
6315 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6316
6317         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6318
6319 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6320
6321         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6322         > so it works on the first vreg as well.
6323
6324 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6325
6326         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6327         trigger randomly.
6328
6329         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6330         
6331         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6332         implement GArray.
6333
6334 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6335
6336         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6337         native->IL offset mapping.
6338
6339 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6340
6341         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6342
6343         * basic.cs: Add a test.
6344
6345 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6346
6347         * mini-x86.c (mono_arch_output_basic_block): Use different
6348         registers in case the ones we want to overwrite are used by the
6349         other operand.  Fixes regression in #480807.
6350
6351 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6352
6353         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6354
6355         * dwarfwriter.c (emit_line_number_info): The line number info for
6356         IL code was off by one. Fix that.
6357
6358         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6359         stack.
6360
6361 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6362
6363         Contributed under the terms of the MIT/X11 license by Steven
6364         Munroe <munroesj@us.ibm.com>.
6365
6366         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6367         Fixes #483462.
6368
6369 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6370
6371         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6372         as well.
6373
6374 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6375
6376         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6377         the delegate ctor handling code. Fixes #482638.
6378         
6379         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6380         #481458.
6381
6382         * iltests.il.in: Add a test.
6383         
6384         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6385         mini-posix.c.
6386
6387 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6388
6389         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6390         is shared generic code, return the trampoline, even if the method
6391         has already been compiled.  Fixes #479763.
6392
6393         * mini.c, mini.h: New function
6394         mono_jit_find_compiled_method_with_jit_info() which is the same as
6395         mono_jit_find_compiled_method() but also returns the jit info.
6396
6397 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6398
6399         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6400         for methods which actually have one.  For all other methods, make
6401         sure the this argument var is live the whole method.
6402
6403         * mini.c (mini_method_compile): Every shared method has a
6404         this/vtable/mrgctx info.  Fixes #480807.
6405
6406 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6407
6408         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6409         generic/imt thunks where some entries branch through the vtable,
6410         while other entries branch directly.
6411
6412 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6413
6414         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6415
6416         * mini-windows.c: Ditto.
6417         
6418         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6419         ctors.
6420
6421 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6422
6423         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6424         down an assert.
6425
6426 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6427
6428         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6429         #481403.
6430
6431 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6432
6433         * exceptions-x86.c: Include debug-mini.h - fixes build.
6434
6435 2009-03-04  Martin Baulig  <martin@ximian.com>
6436
6437         * debug-mini.c: Clean up the exception API and add documentation.
6438         (mono_debugger_handle_exception): New public method; this is
6439         called when throwing an exception or encountering an unhandled one.
6440         (mono_debugger_call_exception_handler): Formerly known as
6441         mono_debugger_handle_exception(); this is used to tell the
6442         debugger that we're about to invoke an exception handler.
6443
6444 2009-03-04  Martin Baulig  <martin@ximian.com>
6445
6446         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6447         ../metadata/mono-debug-debugger.c; save and reset exception state.
6448
6449 2009-03-02  Martin Baulig  <martin@ximian.com>
6450
6451         * debug-mini.c: Moved the debugger exception handling here from
6452         ../metadata/mono-debug-debugger.c.
6453
6454         * debug-mini.h
6455         (MonoDebuggerExceptionAction): New exception typedef.
6456
6457         * debug-mini.c
6458         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6459
6460         * exceptions-amd64.c
6461         (mono_amd64_throw_exception): Use the new debugger exception
6462         handling code.
6463
6464         * mini-exceptions.c
6465         (mono_handle_exception_internal): Don't call
6466         mono_debugger_unhandled_exception() here.
6467
6468 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6469
6470         * mini.c aot-compiler.c: Update after the changes to 
6471         mono_marshal_get_runtime_invoke ().
6472
6473         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6474         Virtual generic methods might not have method->slot set, work around
6475         that.
6476
6477         * generics.cs: Add a test.
6478
6479 2009-03-02  Geoff Norton  <gnorton@novell.com>
6480
6481         * mini.c:
6482         * driver.c: Allow signal chaining of SIGFPE as well.
6483
6484 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6485
6486         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6487         this since it now receives the method not its generic context in the
6488         IMT reg.
6489
6490         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6491         generic/imt thunks where some entries branch through the vtable, while
6492         other entries branch directly.
6493
6494         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6495
6496         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6497         support for interface methods as well.
6498
6499         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6500         using the normal IMT thunks.
6501
6502         generics.cs: Add new tests.
6503         
6504         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6505         the generic inst to the generic imt thunks. This fixes AOT support, 
6506         improves consistency with the normal IMT thunks, and makes it easier to
6507         add support for interface generic virtual methods later.
6508
6509         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6510         
6511 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6512
6513         * driver.c (mono_set_signal_chaining): New public API function to enable
6514         signal chaining on POSIX platforms.
6515
6516         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6517         (si@lindenlab.com) to implement signal chaining. The original patch was
6518         contributed under the MIT X/11 license:
6519         https://bugzilla.novell.com/show_bug.cgi?id=318894
6520
6521 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6522
6523         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6524         too until it can be made to run on amd64.
6525
6526 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6527
6528         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6529         to  get_generic_context_from_code () + get_call_info () if possible.
6530
6531 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6532
6533         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6534         suspend-on-sigsegv functionality.
6535
6536         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6537         to suspend when a native SIGSEGV is received. This is useful for debugging
6538         crashes which don't happen under gdb, since a live process contains more
6539         information than a core file.
6540
6541         * mini-exceptions.c (mono_print_thread_dump): Use 
6542         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6543
6544         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6545
6546         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6547         
6548         * basic-float.cs: Disable the tests which currently fail on amd64.
6549
6550         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6551         value to mono_arch_patch_callsite () to fix crashes.
6552         
6553         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6554
6555 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6556
6557         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6558         nop code by patching the call address to point to the nullified class init
6559         trampoline, as the former does not seem to be safe on SMP machines.
6560
6561 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6562
6563         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6564         they were wrong.
6565
6566 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6567
6568         * basic-float.cs basic-calls.cs: Fix warnings.
6569
6570 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6571
6572         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6573         correct frame pointer in the LMF.  Should fix #478394.
6574
6575 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6576
6577         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6578
6579         * image-writer.c: Make the binary writer less verbose.
6580
6581 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6582
6583         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6584         are called from runtime invoke wrappers.
6585
6586 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6587
6588         * cpu-ppc.md (store_memindex): Increase the size of this.
6589
6590 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6591
6592         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6593
6594         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6595
6596         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6597         OP_LCONV_TO_R_UN.
6598
6599         Last fix for of #467201.
6600
6601
6602 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6603
6604         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6605
6606         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6607         and long_conv_to_r8_2:
6608
6609         Fixed part of #467201.
6610
6611 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6612
6613         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6614
6615         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6616         conversion to 32 bits.
6617
6618         * cpu-x86.md: Increase the size of int_conv_to_r4.
6619
6620         * basic-float.cs: Add a test for this.
6621
6622         Fixed part of #467201.
6623
6624 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6625
6626         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6627
6628         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6629         conversion to 64 bits.
6630
6631         * basic-float.cs: Add a test for this.
6632
6633         Fixed part of #467201.
6634
6635 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6636
6637         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6638
6639         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6640         This behavior is compatible with MS.
6641
6642         * iltest.il.in: Add a test for this.
6643
6644         Fixed part of #467201.
6645
6646 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6647
6648         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6649
6650         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6651         change the precision of the value.
6652
6653         * cpu-x86.md: Define len for float_conv_to_r4.
6654
6655         * basic-float.cs: Add a test for this.
6656
6657         Fixed part of #467201.
6658
6659 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6660
6661         * mini.c: Adjust locking order to the new semantics where the loader lock
6662         comes first.
6663
6664 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6665
6666         * aot-runtime.c:
6667         * mini-amd64.c:
6668         * mini-arm.c:
6669         * mini-ia64.c:
6670         * mini-mips.c:
6671         * mini-ppc.c:
6672         * mini-sparc.c:
6673         * mini-trampolines.c:
6674         * mini-x86.c:
6675         * mini.c:
6676         * tramp-alpha.c:
6677         * tramp-amd64.c:
6678         * tramp-arm.c:
6679         * tramp-hppa.c:
6680         * tramp-ia64.c:
6681         * tramp-mips.c:
6682         * tramp-ppc.c:
6683         * tramp-s390.c:
6684         * tramp-s390x.c:
6685         * tramp-sparc.c:
6686         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6687
6688 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6689
6690         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6691         as it is incorrect.
6692
6693 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6694
6695         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6696         for cctors if needed.
6697
6698 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6699
6700         * mini-ppc.c: Fix build on Darwin.
6701
6702 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6703
6704         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6705         version instead of 3 as valgrind doesn't like version 3.
6706
6707         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6708
6709         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6710         usable for hashing methods.
6711         (emit_extra_methods): Use the new hash to avoid putting every method in the
6712         same hash bucket.
6713
6714         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6715
6716         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6717         whenever a method ref could match a method.
6718         
6719         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6720         test to fail.
6721         
6722         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6723         methods refs.
6724
6725         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6726
6727         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6728         the encoding buffer.
6729
6730         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6731         mono_method_get_header () on inflated methods as an optimization.
6732
6733 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6734
6735         * ssa.c (fold_ins): Fix another crash if the instruction following the
6736         switch was optimized away.
6737
6738 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6739
6740         Contributed under the terms of the MIT/X11 license by Steven
6741         Munroe <munroesj@us.ibm.com>.
6742
6743         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6744
6745 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6746
6747         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6748         around the mono_domain_alloc calls, it is now done by the functions
6749         themselves.
6750
6751         * aot-compiler.c (compile_method): Only add wrappers referenced by
6752         the method if compiling with full AOT.
6753         (mono_compile_assembly): Error out if --aot=full is specified on
6754         a platform where it is not supported.
6755
6756         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6757         on ARM too.
6758
6759         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6760         AOT support.
6761
6762         * aot-runtime.c (load_named_code): Handle 
6763         mono_arm_throw_exception_by_token.
6764
6765         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6766
6767         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6768         unaligned.
6769
6770         * Makefile.am (fullaotcheck): Exit if a test fails.
6771
6772         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6773         on ARM.
6774         (mono_compile_assembly): Handle the assembler failing.
6775
6776         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6777         accepting subsections of .bss.
6778
6779         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6780         was optimized away.
6781
6782         * aot-compiler.c: Remove some unused includes.
6783         
6784         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6785         now in MonoImageWriter.
6786
6787         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6788         code sequence which matches a non-virtual call. Fixes #472654.
6789
6790 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6791
6792         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6793         xdebug code.
6794         
6795         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6796         use the image/dwarf writers directly.
6797
6798         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6799         field.
6800
6801         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6802         MonoDwarfWriter.
6803
6804         * image-writer.h: Fix some typos.
6805
6806         * dwarfwriter.h dwarfwriter.c: New files.
6807         
6808         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6809         separate module.
6810
6811         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6812         argument to return unwind info.
6813
6814         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6815
6816         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6817         
6818         * aot-runtime.c (decode_method_ref): Add a case for 
6819         MONO_AOT_METHODREF_WRAPPER_NAME.
6820
6821         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6822         for AOT.
6823
6824         * aot-compiler.c (encode_method_ref): Use the new constants.
6825
6826         * aot-runtime.c (decode_method_ref): Ditto.
6827
6828         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6829         be compiled, not the icall itself.
6830
6831 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6832
6833         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6834         using decode_method_ref ().
6835
6836         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6837         convert it to an in32. Fixes #475859.
6838
6839         * arrays.cs: Add a test.
6840
6841 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6842
6843         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6844         OP_LCONV_TO_U2.
6845
6846         * basic-long.cs: Add a test.
6847
6848 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6849
6850         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6851         remove the frame pointer in leaf methods which don't receive any
6852         arguments, don't throw exceptions and don't do dynamic stack
6853         allocations.
6854
6855 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6856
6857         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6858         the fail_tramp changes. Hopefully fixes #475132.
6859
6860 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6861
6862         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6863         instead of mono_metadata_signature_dup_full.
6864
6865 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6866
6867         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6868         for processing jump tables. Fixes #473787.
6869
6870 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6871
6872         * mini-generic-sharing.c: mini_method_get_context() just calls
6873         mono_method_get_context_general() now.
6874
6875         * mini.c, mini.h: Moved get_object_generic_inst(),
6876         construct_object_context_for_method() and
6877         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6878
6879 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6880
6881         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6882         basic block fell through to its successor bblock without a branch. Fixes
6883         #474718.
6884
6885         * iltests.il.in: Add a test.
6886         
6887         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6888         (can_encode_patch): We can now handle arrays of generic parameters and
6889         array methods.
6890
6891         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6892
6893         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6894         the AOT file to avoid some #ifdefs in aot-runtime.c
6895
6896         * mini.h: Bump AOT file format version.
6897
6898 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6899
6900         * Makefile.am (fullaotcheck): Make this run the tests.
6901
6902         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6903
6904 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6905
6906         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6907         individually.  Fixes #473482.
6908
6909 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6910
6911         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6912
6913 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6914
6915         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6916         (mono_compile_assembly): Hush compile warnings about
6917         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6918         code path.
6919
6920 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6921
6922         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6923
6924         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6925
6926         * aot-compiler.c: Fix arm support.
6927
6928         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6929         img_writer_emit_unset_mode () function.
6930
6931         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6932         (mono_unwind_get_dwarf_pc_reg): Ditto.
6933
6934         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6935         Move almost all platform specific code to a set of arch_ functions, 
6936         and document them to ease porting.
6937         
6938         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6939
6940         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6941
6942         * aot-compiler.c: Extract the image writing functionality into a separate
6943         module to reduce the size of this file.
6944
6945 2009-02-09  Geoff Norton  <gnorton@novell.com>
6946
6947         * mini-s390.c: Fix the signature of emit_sig_cookie.
6948
6949 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6950
6951         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6952
6953         * aot-runtime.c (is_shared_got_patch): Ditto.
6954
6955         * aot-runtime.c (load_named_code): Cope with the fact that 
6956         decode_got_entry () won't decode the patch fully if its corresponding got
6957         entry is already filled.
6958         
6959         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6960         Initialize *ji.
6961         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6962
6963         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6964         as the moving pointer instead of 'buf' for consistency with the rest of the
6965         codebase.
6966         (mono_arch_create_monitor_exit_trampoline): Ditto.
6967
6968         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6969         generic_class_init trampolines.
6970         (add_generic_class): Extract some code from add_generic_instances () into a
6971         separate function so it can be called from other places too.
6972         (compile_method): Call add_generic_class () for the classes of inflated methods
6973         referenced by the method.
6974         (can_encode_patch): Allow references to generic parameters.
6975
6976         * aot-runtime.c: Add support the patches required by the new trampolines.
6977         
6978         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6979         support.
6980
6981         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6982         full-aot support.
6983
6984         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6985         this from get_throw_pending_exception, make the signature full aot compatible.
6986
6987         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6988
6989         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6990
6991         * exceptions.cs: Add a test.
6992
6993 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6994
6995         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6996         use the DWARF_DATA_ALIGN constant instead.
6997
6998         * exception-<ARCH>.c: Update after the above change.
6999
7000         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
7001         dwarf unwinder.
7002
7003         * mini-arm.c: Enable the dwarf unwinder.
7004
7005         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
7006         instead of mono_class_setup_vtable ().
7007
7008 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
7009
7010         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
7011         dwarf unwinder.
7012
7013         * mini-x86.h: Enable the dwarf unwinder.
7014
7015 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
7016
7017         Fix mcs/tests/test-7.cs
7018         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
7019         2009-02-03.
7020
7021 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
7022
7023         * mini.c (print_jit_stats): Remove some unused statistics.
7024
7025 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7026
7027         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
7028
7029 2009-02-05  Mark Probst  <mark.probst@gmail.com>
7030
7031         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
7032         the method we get from mono_object_get_virtual_method() because
7033         that function does it properly, now.
7034
7035 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7036
7037         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
7038         opcodes. Fixes #472775.
7039
7040 2009-02-05  Mark Probst  <mark.probst@gmail.com>
7041
7042         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
7043         fact that mono_find_jit_info() sometimes returns the context
7044         corresponding to the jit info in new_ctx.  Fixes #472600.
7045
7046 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7047
7048         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
7049         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
7050         klass->enum_basetype directly.
7051
7052         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
7053         enum subtypes.
7054
7055         * unwind.c: Avoid 0 sized arrays.
7056
7057 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7058
7059         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
7060         size on systems with 64k pages. Fixes #471389.
7061
7062 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7063
7064         Contributed under the terms of the MIT/X11 license by Steven
7065         Munroe <munroesj@us.ibm.com>.
7066
7067         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
7068         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
7069         necessary.
7070
7071 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7072
7073         Contributed under the terms of the MIT/X11 license by Steven
7074         Munroe <munroesj@us.ibm.com>.
7075
7076         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
7077         comparison fix.
7078
7079         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
7080         The trampoline can be longer on PPC64.
7081
7082 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7083
7084         Contributed under the terms of the MIT/X11 license by Steven
7085         Munroe <munroesj@us.ibm.com>.
7086
7087         * mini-ppc.c: Compiler warning fixes and trivial code
7088         simplifications.
7089
7090 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7091
7092         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
7093         ins->dreg which could be a hardware register, not a vreg.
7094
7095         * aot-compiler.c (emit_method_dwarf_info): Ditto.
7096         
7097         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
7098         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
7099
7100         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
7101         
7102         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
7103         ->dreg, that is not the vreg we are looking for.
7104
7105         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
7106
7107         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
7108         LIVERANGE_END.
7109
7110         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
7111         strange crashes.
7112
7113 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
7114
7115         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
7116
7117         * aot-compiler.c (emit_line_number_info): Fix line number emission when
7118         the line diff is 0.
7119
7120         * aot-compiler.c: Add xdebug support on x86.
7121
7122         * unwind.c: Add x86 support.
7123         
7124         * aot-compiler.c (emit_exception_debug_info): Control the emission of
7125         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
7126
7127         * mini.c (mini_method_compile): Ditto.
7128         
7129         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
7130         the variable index.
7131
7132         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
7133         which mimic .push_section/.pop_section in GAS.
7134         
7135         * aot-compiler.c: Emit precise live range information for variables.
7136
7137         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
7138
7139         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
7140         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
7141         them.
7142
7143         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
7144         the live ranges of variables.
7145
7146         * mini.h (struct MonoMethodVar): Add two fields containing the live range
7147         of the variable in terms of native offsets.
7148
7149 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
7150
7151         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
7152         
7153 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7154
7155         Contributed under the terms of the MIT/X11 license by Steven
7156         Munroe <munroesj@us.ibm.com>.
7157
7158         * exceptions-ppc.c (restore_regs_from_context): Correct operand
7159         order (offset then base reg) for ppc_load_multiple_regs.
7160         (emit_save_saved_regs) Correct operand order for
7161         ppc_store_multiple_regs.
7162         (mono_arch_get_call_filter): Correct operand order for
7163         ppc_load_multiple_regs.
7164
7165         * mini-ppc.c (emit_memcpy): Fix operand order for
7166         ppc_load_reg_update and ppc_store_reg_update.
7167         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
7168         (mono_arch_emit_epilog): Correct operand order for
7169         ppc_load_multiple_regs.
7170
7171         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
7172         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
7173
7174 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7175
7176         * cpu-ppc64.md: Fixed storer4_memindex length.
7177
7178 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
7179
7180         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
7181         line number info.
7182         
7183         * aot-compiler.c (emit_line_number_info): Optimize this.
7184
7185 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7186
7187         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7188         
7189         * aot-compiler.c: Add debug info for methods without debug info by
7190         emitting an IL file and having the line number info referencing that file.
7191
7192         * aot-compiler.c: Optimize the size of the generated line number info.
7193
7194         * aot-compiler.c: Emit line number info in xdebug mode.
7195
7196         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7197         million arguments.
7198
7199 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7200
7201         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7202
7203         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7204         is used.
7205
7206 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7207
7208         * basic-calls.cs: Test for the weird crash found on arm.
7209         
7210 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7211
7212         * cpu-arm.md: Increase the size of storer8_membase_reg and
7213         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7214
7215         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7216         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7217         reg to LR otherwise we'll be loading/storing from just the offset.
7218
7219 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7220
7221         Question: if we are storing gint32's inside the "*native_offset",
7222         should we change the signature to "gint32 *native_offset" to
7223         ensure that we do not have type definition problems?
7224         
7225         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7226         an int * as this is what the other function expects, causes
7227         problems with Freescale's compiler that defined int32_t to be a
7228         long and makes int incompatible 
7229
7230 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7231
7232         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7233         filename conflict with bjam.
7234
7235 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7236
7237         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7238         as it might use decomposed ops.
7239
7240 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7241
7242         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7243
7244         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7245         is defined.
7246
7247         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7248
7249         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7250         offsets.
7251
7252         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7253         way registers are stored in MonoContext on arm.
7254
7255         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7256         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7257
7258         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7259
7260         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7261
7262         * mini.c (mini_init): Register mono_isfinite.
7263
7264         * jit-icalls.c (mono_isfinite): New jit icall.
7265
7266         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7267         
7268         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7269         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7270         the parent frame.
7271
7272 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7273
7274         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7275         separate frame and stack pointers, so we must use FP to find the register
7276         spill area.
7277         The FP reg is retrieved from the MonoContext::regs array.
7278
7279 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7280
7281         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7282         as FPA requires it.
7283
7284 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7285
7286         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7287         return R4 and R8 when not running under softfloat.
7288
7289         Fixes basic-calls.exe
7290
7291 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7292
7293         * mini-arm.c: Implement some overflow opcodes.
7294
7295 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7296
7297         * ssa.c: handle another alloca.h
7298
7299         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7300         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7301         MONO_ARCH_USE_SIGACTION. 
7302
7303         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7304         capability defines.
7305
7306         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7307
7308         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7309         PPC targets as sigaction does not exist on all platforms, define
7310         this on a per-platform basis.
7311
7312         Instead of erroring out if the platform is not defined, include
7313         mini-ppc-os.h, and expect that the OS specific setting provides
7314         the required information.   
7315
7316 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7317
7318         * aot-compiler.c: Fix --enable-minimal=aot.
7319
7320 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7321
7322         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7323         previous change.
7324
7325 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7326
7327         * exceptions-arm.c: Fix warnings.
7328
7329         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7330         ARM.
7331
7332         * mini-x86.c: Fix --enable-minimal=jit build.
7333
7334         * mini.c: Really fix --enable-minimal=jit build.
7335         
7336         * mini.c (construct_object_context_for_method): Move this outside
7337         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7338
7339         "Backported" of r124984 from 2.0 branch.
7340         
7341         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7342
7343         "Backport" of r124977 + r124978 from 2.0 branch.
7344         
7345         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7346         to avoid calling mono_exception_from_token () from the throw trampoline.
7347         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7348         for throwing corlib exceptions, this fixes full-aot support for corlib
7349         exceptions.
7350
7351         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7352
7353 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7354
7355         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7356         part of the changes to split the code in mini into operating
7357         system specific files.
7358
7359         This patch was done by copying mini.c to the respective files to
7360         preserve SVN history.
7361
7362 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7363
7364         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7365
7366 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7367
7368         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7369         remoting-invoke-with-check wrappers of shared methods.
7370
7371         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7372
7373 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7374
7375         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7376         optimization if the top of stack is the last instruction in the
7377         bblock.  Otherwise it might have been used after its definition.
7378         Fixes #469742.
7379
7380 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7381
7382         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7383         method as well when get_vcall_slot () fails to match a code sequence.
7384
7385         * mini-arm.c: Fix the android build, which doesn't have
7386         __aeabi_read_tp.
7387
7388 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7389
7390         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7391         the s390x build.
7392
7393 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7394
7395         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7396
7397 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7398
7399         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7400         and put its id into jinfo->used_regs. This is only used on amd64,
7401         which is currently the only platform generating unwind info.
7402
7403         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7404         the dwarf unwinder. This is required to correctly handle async exceptions
7405         like thread abort and stack overflows, which can happen while a method
7406         is in the middle of its prolog or epilog.
7407         
7408         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7409         the unwind info belonging to an AOTed method.
7410
7411         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7412         into cfg->unwind_ops.
7413         
7414         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7415
7416         * mini.c (mini_init): Call mono_unwind_init ().
7417         (mini_cleanup): Call mono_unwind_cleanup ().
7418
7419         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7420         unwind info to be shared between methods.
7421
7422         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7423         saved in the LMF.
7424
7425         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7426         get_throw_pending_exception () to avoid initialization races.
7427
7428         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7429         mono_arch_exceptions_init () function.
7430
7431         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7432
7433 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7434
7435         * mini.c (mono_get_domain_intrinsic): New helper function.
7436         (mono_get_thread_intrinsic): Ditto.
7437
7438         * mini-arm.c mini-ia64.c: Use the new helper functions.
7439         
7440         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7441         the last constrained_call change, since it is needed in the non-AOT
7442         case as well.
7443
7444         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7445         
7446         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7447         mono_get_lmf_addr () on arm eabi linux.
7448
7449 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7450
7451         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7452         code sequence which matches a non-virtual call.
7453
7454 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7455
7456         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7457         stack pointer (r1).
7458
7459 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7460
7461         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7462         runtime-invoke wrappers, since they are also shared based on signature.
7463
7464 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7465
7466         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7467         info from the (correct) context.
7468
7469 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7470
7471         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7472         
7473         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7474         using dwarf unwinding info. Not yet used.
7475
7476         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7477
7478 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7479
7480         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7481         descriptors.
7482
7483         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7484         special case and handle mono_arch_delegate_invoke_impl() returning
7485         function descriptors.
7486
7487         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7488         trampolines return function descriptors, too.
7489
7490 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7491
7492         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7493         out_of_line optimization.
7494
7495 2009-01-21  Martin Baulig  <martin@ximian.com>
7496
7497         * mini.h
7498         (MonoCompile): Added `disable_deadce_vars' to disable removing
7499         unused variables.
7500
7501         * mini.c
7502         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7503         inside the debugger.
7504
7505         * liveness.c (mono_analyze_liveness): Don't remove any unused
7506         variables if `cfg->disable_deadce_vars' is set.
7507
7508 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7509
7510         * method-to-ir.c: Only apply exception constructor optimization if
7511         the the method actually belongs to an exception class.  Fixes
7512         #467456.
7513
7514 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7515
7516         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7517         change inside a #ifdef __mono_ppc64__.
7518
7519         * aot-compiler.c (compile_method): Remove the previous limitation.
7520
7521         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7522         on type variables in AOTed code.
7523         
7524         * aot-compiler.c (compile_method): Skip generic methods having type 
7525         constraints on their generic parameters.
7526
7527         * aot-compiler.c (compile_method): Check for methods which cannot be
7528         encoded inside RGCTX_FETCH patches as well.
7529
7530         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7531         build.
7532
7533 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7534
7535         * method-to-ir.c: Force the vtable variable in shared generic code
7536         for the case that they might show up on a stack trace where they
7537         are needed.
7538
7539         * mini-exceptions.c: Save and use generic sharing info as well as
7540         IP in stack traces to resolve shared generic instantiations.
7541
7542 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7543
7544         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7545         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7546
7547 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7548
7549         * method-to-ir.c: Do generic sharing for array constructors.
7550
7551 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7552
7553         * mini-exceptions.c (mono_print_thread_dump): Add information
7554         about the thread state using wapi_current_thread_desc.
7555
7556 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7557
7558         * basic-simd.cs: Tests for the new constructors. 
7559
7560 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7561
7562         * mini-ops.h: Added OP_EXPAND_*
7563
7564         * cpu-x86.md: Same.
7565
7566         * mini-x86.c (mono_arch_output_basic_block): Same.
7567         
7568         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7569
7570 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7571
7572         * iltests.il.in: Add a test for #467385.
7573
7574 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7575
7576         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7577         thread been cleaned up is not the same currently in execution.
7578
7579         Fixes appdomain-unload crashes on windows, osx and linux variants
7580         without the __thread keyword.
7581
7582 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7583
7584         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7585         (koush@koushikdutta.com). Implement this for android.
7586
7587         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7588         begins with a digit.
7589
7590         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7591         mono_marshal_get_write_barrier ().
7592
7593 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7594
7595         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7596         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7597         that pass them on a register pair.
7598
7599         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7600         test was crashing due to that.
7601
7602 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7603
7604         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7605         trampoline code. Include ucontext.h only if available.
7606
7607 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7608
7609         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7610         and doesn't check whether it's sharable, like it was before
7611         removing the shared generics hash.  This brings IronPython
7612         performance back to what it was before that change.
7613
7614 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7615
7616         * method-to-ir.c: Handle delegate invocation optimization earlier,
7617         otherwise it would be handled (much more slowly) by the
7618         final/sealed optimization.
7619
7620 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7621
7622         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7623         domain is not set. Fixes #465864.
7624
7625 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7626
7627         * method-to-ir.c: Don't stop sharing of generic methods with catch
7628         clauses - we already handle those.
7629
7630 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7631
7632         * mini.c, mini.h: lookup_generic_method() is now
7633         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7634         making the shared_generics_hash obsolete.
7635
7636 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7637
7638         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7639         use the red zone.  Make room on the stack first and then use it,
7640         not the other way around.
7641
7642 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7643
7644         * mini.c (mini_init): Call mono_xdebug_init ().
7645
7646         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7647
7648 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7649
7650         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7651
7652         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7653         trampolines.
7654
7655         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7656         debug+unwind info for trampolines.
7657
7658         * mini.c (mono_create_unwind_op): New helper function.
7659
7660         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7661
7662 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7663
7664         * aot-compiler.c: Fix the build.
7665
7666 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7667
7668         * Makefile.am: Update dtrace-prelink.sh location.
7669
7670 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7671
7672         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7673         optimization. Fixes #464520.
7674
7675 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7676
7677         * mini-amd64.c : Adding code to save/restore non-volatile registers
7678            on Winx64.
7679
7680         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7681           registers on Winx64.
7682
7683         Contributed under MIT/X11 license.
7684
7685 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7686
7687         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7688         __GNUC_MINOR__ which can break when the major version changes.
7689
7690 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7691
7692         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7693
7694 2009-01-07  Geoff Norton  <gnorton@novell.com>
7695
7696         * helpers.c:  Allow mono -v -v -v to work on darwin.
7697
7698 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7699
7700         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7701           pattern. 
7702
7703         Contributed under MIT/X11 license.
7704
7705 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7706
7707         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7708         instead of directly accessing type->data.klass. Fixes #462016.
7709         (mono_allocate_stack_slots_full): Ditto.
7710
7711         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7712         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7713
7714         * aot-compiler.c (emit_plt): Fix ARM build.
7715
7716 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7717
7718         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7719         
7720         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7721         change.
7722
7723         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7724         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7725         #463357.
7726
7727         * iltests.il.in: Add a regression test.
7728
7729 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7730
7731         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7732
7733 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7734
7735         * basic-simd.cs: Add a regression test for #462457.
7736
7737 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7738
7739         * mini-ops.h: Add a definition of XPHI.
7740
7741         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7742
7743         * ssa.c (op_phi_to_move): Handle XPHI.
7744
7745         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7746
7747         Fixes #462457
7748
7749 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7750
7751         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7752
7753 2008-12-31  Geoff Norton  <gnorton@novell.com>
7754
7755         * mini-ppc.c: The prolog size allocated can be too small for darwin
7756         ppc32 under certain circumstances.  Also fix a small logic bug.
7757
7758 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7759
7760         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7761         while loading AOT methods.
7762
7763         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7764         since only the former is nulled out after a successful cast. This prevents
7765         crashes with rethrown exceptions when using --debug=casts.
7766
7767 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7768
7769         * mini.h: New macro for checking whether a method is final,
7770         i.e. whether the method or its class is marked final.
7771
7772         * method-to-ir.c: Use the new macro for all final-checks
7773         consistently.  Fixes the crash in the System.ServiceModel tests.
7774
7775 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7776
7777         * mini-exceptions.c (get_exception_catch_class): Corrected another
7778         overly strict assertion.
7779
7780 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7781
7782         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7783         Clobbering it is not allowed because the caller might use it as
7784         the vtable register in the interface call.
7785
7786 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7787
7788         * mini-exceptions.c (get_exception_catch_class): Corrected an
7789         overly strict assertion.
7790
7791 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7792         
7793         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7794
7795         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7796
7797         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7798
7799         * cpu-mips.md: correct lengths for certain long_ opcodes.
7800
7801         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7802
7803         * 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().
7804         
7805 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7806
7807         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7808         
7809 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7810         
7811         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7812         
7813 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7814
7815         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7816         next basic block.
7817         
7818 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7819
7820         * 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
7821
7822         * 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)
7823         
7824 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7825         
7826         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7827         
7828 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7829
7830         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7831         gshared code. Fixes #458947.
7832
7833         * generics.cs: Add a test.
7834
7835 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7836         
7837         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7838         
7839         * mini-mips.c: first pass n32 code generation.
7840
7841         * mini-mips.h: datatypes and defines for n32 support.
7842
7843         * exceptions-mips.c: first pass n32 code generation.
7844         
7845         * tramp-mips.c: first pass n32 code generation.
7846         
7847         * cpu-mips.md: add long_ opcodes.
7848         
7849 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7850
7851         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7852
7853         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7854         
7855         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7856         
7857         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7858
7859         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7860
7861         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7862
7863         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7864
7865         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7866
7867         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7868
7869 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7870
7871         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7872
7873 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7874
7875         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7876
7877 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7878
7879         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7880         descriptors for helper functions directly in front of the code.
7881
7882 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7883
7884         * method-to-ir.c: Removed an unnecessary assertion.
7885
7886 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7887
7888         * method-to-ir.c: Merge SGEN changes from the old JIT.
7889
7890 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7891
7892         * driver.c (compile_all_methods_thread_main): Handle failure of
7893         mono_get_method ().
7894
7895 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7896
7897         * mini-ppc.c: Merged with mini-ppc64.c.
7898
7899         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7900
7901         * Makefile.am: Use the same sources for PPC and PPC64.
7902
7903         * mini-ppc64.c: Removed.
7904
7905 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7906
7907         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7908         code to mono_bb_is_fall_through.
7909         
7910         * branch-opts.c (mono_remove_critical_edges): Same.
7911
7912 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7913
7914         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7915         expect that an OP_BR_REG will be there.
7916
7917 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7918
7919         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7920         for the many branch ops. The original check miss OP_BR_REG.
7921
7922         Fixes #457574.
7923         
7924 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7925
7926         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7927
7928 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7929
7930         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7931         while holding the aot lock.
7932
7933 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7934
7935         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7936         
7937 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7938
7939         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7940           to release all runtime callable wrappers held by the runtime.
7941
7942         Contributed under MIT/X11 license.
7943
7944 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7945
7946         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7947           for Winx64.
7948
7949         Contributed under MIT/X11 license.
7950
7951 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7952
7953         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7954         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7955
7956 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7957
7958         * cpu-mips.md: fix ckfinite length
7959
7960         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7961         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7962         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7963         
7964 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7965
7966         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7967         
7968 2008-12-08  Geoff Norton  <gnorton@novell.com>
7969
7970         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7971         size by 8 bytes as well.
7972
7973 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7974
7975         * basic-simd.cs: Fix method names for Vector16b.
7976         
7977 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7978
7979         * basic-simd.cs: Fix method names for Vector16sb.
7980
7981 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7982
7983         * basic-simd.cs: Fix method names for Vector8us.
7984         
7985 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7986
7987         * basic-simd.cs: Fix method names for Vector8s.
7988         
7989 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7990
7991         * basic-simd.cs: Fix method names for Vector4ui.
7992
7993 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7994
7995         * basic-simd.cs: Fix method names for Vector2l.
7996
7997 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7998
7999         * basic-simd.cs: Fix method names for Vector2d.
8000
8001 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8002
8003         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
8004         that are extension methods.
8005
8006 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8007
8008         * basic-simd.cs: Fix method names for Vector4f.
8009
8010 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
8011
8012         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
8013         as such. Fixes #456669.
8014
8015 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
8016
8017         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
8018         
8019 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
8020
8021         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
8022         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
8023         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
8024         (mips_adjust_stackframe): handle FP spills
8025                 
8026         * mini-ops.h: add mips_mtc1_s2
8027         
8028         * cpu-mips.md: add mips_mtc1_s2
8029         
8030 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
8031
8032         * unwind.c: New file, move the unwind info encoding functions here from
8033         aot-compiler.c, so they could be used at runtime too.
8034
8035 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
8036
8037         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
8038         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
8039         
8040 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
8041
8042         * mini-mips.c: cleanup warnings
8043         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
8044         (mips_adjust_stackframe): handle case of taking the address of stack locals
8045         
8046 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8047
8048         * aot-compiler.c: Implement a few functions missing from the asm writer.
8049         (emit_method_code): Only write symbols for methods when using the bin
8050         writer, since the assembler can't deal with the characters in our method
8051         names.
8052
8053         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
8054
8055         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
8056         call.
8057
8058         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
8059         a bit to also restore %rax.
8060
8061 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8062
8063         * mini-ppc.c: Some simple merges from mini-ppc64.c.
8064
8065 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8066
8067         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
8068         arguments.
8069
8070 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8071
8072         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
8073
8074         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
8075         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
8076
8077         * exceptions-ppc64.c: Removed.
8078
8079         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
8080
8081 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8082
8083         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
8084         tramp-ppc64.c.
8085
8086         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
8087
8088         * tramp-ppc64.c: Removed.
8089
8090 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8091
8092         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
8093         the TYPESPEC table.
8094
8095 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8096
8097         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
8098
8099         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
8100         mini-ppc.h instead of mini-ppc64.h.
8101
8102         * mini-ppc64.h: Removed.
8103
8104 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8105
8106         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
8107         
8108         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
8109         
8110 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8111
8112         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
8113         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
8114         code easier.
8115
8116 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8117
8118         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
8119
8120 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8121
8122         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
8123
8124 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8125
8126         * basic-simd.cs: Tests for operator == and != on Vector4f.
8127
8128 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8129
8130         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
8131
8132         * simd-intrinsics.c: Kill useless enum.
8133
8134 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8135
8136         * cpu-mips.md: add long_conv_to_ovf_i4_2
8137         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
8138
8139 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8140
8141         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
8142         
8143         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
8144
8145 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8146
8147         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
8148         
8149 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8150
8151         * basic-simd.cs: Add tests for new methods.
8152
8153 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8154
8155         * simd-intrinsics.c: Add support for operator == and !=
8156         on Vector4(u)i.
8157
8158         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
8159
8160 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8161
8162         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
8163
8164 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
8165
8166         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
8167
8168         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
8169         MONO_PATCH_INFO_ICALL_ADDR.
8170
8171         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
8172
8173         * aot-compiler.c: Resurrect full-aot support.
8174
8175 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8176
8177         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
8178         
8179 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8180
8181         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
8182         
8183 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8184
8185         * basic-simd.cs: Fix tests to work under ppc.
8186         Remove tests for methods that will be removed.
8187
8188 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8189
8190         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8191         generic type (via a typedef or typeref) correctly.
8192
8193 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8194
8195         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8196         diagnose an assertion failure.
8197
8198 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8199
8200         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8201         Fix trampoline size.
8202
8203         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8204         conversion opcodes are implemented natively instead via emulation.
8205
8206 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8207
8208         * cpu-mips.md: remove mips_xori
8209
8210         * mini-ops.h:  remove mips_xori
8211
8212         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8213
8214         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8215         
8216         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8217         
8218 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8219
8220         * cpu-mips.md: fix instruction lengths.
8221
8222         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8223
8224         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8225
8226         * mini-ops.h: fix slti / sltiu op profiles.
8227         
8228 2008-12-02  Martin Baulig  <martin@ximian.com>
8229
8230         * method-to-ir.c (mono_method_to_ir): Disable debugging
8231         information for the init locals block to make the debugger stop
8232         after all locals have been initalized.
8233
8234 2008-12-02  Martin Baulig  <martin@ximian.com>
8235
8236         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8237         running inside the debugger.
8238
8239 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8240
8241         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8242         is enabled.
8243
8244         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8245         alu->alu imm optimization which only shows if deadce is disabled.
8246
8247         * aot-compiler.c: Rename the function names for the binary and asm writers
8248         so they can coexist in the same process. Rework the xdebug code to use the
8249         asm writer. This avoids the need to call into the runtime to dump the
8250         debugging info. Add more debugging info for types.
8251
8252         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8253
8254         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8255         cpu description tables, they can't occur in cpu-<ARCH>.md.
8256
8257         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8258         the stack in CEE_LDFLDA. Fixes #450542.
8259
8260         * generics.cs: Add a new test.
8261
8262 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8263
8264         * mini-ops.h: updated MIPS opcodes
8265         * mini-mips.c: decompose long opts
8266         * mini-mips.h: decompose long opts
8267         
8268 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8269
8270         * cpu-mips.md: fix length on int_rem_un
8271         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8272         
8273 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8274
8275         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8276
8277         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8278
8279 2008-11-29  Martin Baulig  <martin@ximian.com>
8280
8281         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8282         mono_debug_using_mono_debugger() in addition to the
8283         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8284
8285 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8286
8287         * mini-ops.h: updated more MIPS opcodes
8288         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8289         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8290         
8291 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8292
8293         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8294
8295 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8296
8297         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8298         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8299         * mini-ops.h: correct selected mips opcode entries
8300         
8301 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8302
8303         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8304         make them work.
8305
8306 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8307
8308         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8309
8310 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8311
8312         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8313         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8314         * mini-mips.h: disable IMT
8315         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8316         
8317 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8318
8319         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8320
8321 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8322
8323         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8324
8325 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8326
8327         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8328         consistency.
8329
8330 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8331
8332         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8333         for Set/GetVector aligned versions.
8334
8335 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8336
8337         * basic-simd.cs: Add tests for Get/SetVector.
8338
8339 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8340
8341         * mini.c: Removed g_slist_append_mempool().  Now in
8342         metadata/mempool.c.
8343
8344 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8345
8346         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8347         size properly and make the bounds check optional.
8348
8349         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8350         for SetVector and IsAligned.
8351
8352 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8353
8354         * mini.c: Remove unused mono_normalize_opcodes () function.
8355
8356 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8357
8358         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8359         using the new atomic add ops now.
8360
8361         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8362         add.
8363
8364 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8365
8366         * mini-ppc64.c: Several fixes.
8367
8368 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8369
8370         * cpu-mips.md: added jump_table
8371         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8372
8373 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8374
8375         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8376
8377 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8378
8379         * mini-ops.h: corrected a handful of MIPS opcodes.
8380
8381 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8382
8383         * aot-compiler.c: MIPS to use ELF writer
8384
8385 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8386
8387         * mini-codegen.c: remove MIPS specific assert.
8388
8389 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8390
8391         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8392         fixes.  PPC64 now passes most of the runtime regressions.
8393
8394 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8395
8396         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8397         volatile intervals a bit.
8398
8399 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8400
8401         * basic-long.cs: New test case.
8402
8403 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8404
8405         * mini.c (mini_method_compile): Disable globalra for large methods for 
8406         now.
8407
8408         * regalloc2.c (order_moves): Add fp support.
8409
8410         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8411         source bblock ends with an OP_BR_REG.
8412
8413         * ratests.cs: Add a new test.
8414
8415 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8416
8417         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8418         sharing.  PPC64 now passes generics.exe.
8419
8420 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8421
8422         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8423
8424 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8425
8426         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8427         memory when mono_jit_info_table_find () can't find the method in the
8428         LMF case.
8429
8430         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8431         AOTed code too.
8432         
8433         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8434         writer too.
8435
8436 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8437
8438         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8439         Several fixes.  PPC64 now runs exceptions.exe and
8440         devirtualization.exe.
8441
8442 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8443
8444         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8445         arrays.exe and basic-math.exe.
8446
8447 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8448
8449         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8450         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8451
8452 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8453
8454         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8455
8456 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8457
8458         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8459
8460         * ir-emit.h: Move macros from method-to-ir.c to here.
8461
8462 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8463
8464         * mini-ops.h: Correct the long simd ops to use LREG.
8465
8466 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8467
8468         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8469         
8470         * mini-ops.h: Correct the dreg type of a few long opcodes.
8471
8472         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8473         Add netbsd support.
8474
8475 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8476
8477         * mini-ppc.c: remove negative stack references in epilog
8478         for platforms that don't support the red zone.
8479
8480 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8481
8482         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8483         point regs.  Now PPC64 passes basic-calls.exe.
8484
8485 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8486
8487         * basic-simd.cs: Add tests for accessors of Vector2l.
8488
8489 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8490
8491         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8492
8493         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8494         
8495         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8496
8497 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8498
8499         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8500         PPC64 passes basic-long.exe.
8501
8502 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8503
8504         * decompose.c: Decompose carry and overflow add on PPC64 like on
8505         other 64 bit archs.  Don't decompose sub at all on PPC64.
8506
8507         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8508         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8509         basic-long.exe.
8510
8511 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8512
8513         * basic-simd.cs: Add tests for accessors of Vector2d.
8514
8515 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8516
8517         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8518
8519         * cpu-x86.md: Same.
8520
8521         * mini-x86.c (mono_arch_output_basic_block): Same.
8522         
8523         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8524
8525 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8526
8527         * basic-simd.cs: Add tests for accessors of Vector4f.
8528
8529 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8530
8531         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8532
8533         * cpu-x86.md: Same.
8534
8535         * mini-x86.c (mono_arch_output_basic_block): Same.
8536         
8537         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8538
8539 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8540
8541         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8542
8543 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8544
8545         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8546
8547         * cpu-x86.md: Same.
8548
8549         * mini-x86.c (mono_arch_output_basic_block): Same.
8550         
8551         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8552
8553 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8554
8555         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8556
8557 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8558
8559         * simd-intrinsics.c: Enable setters for Vector16sb.
8560
8561 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8562
8563         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8564
8565         * cpu-x86.md: Same.
8566
8567         * mini-x86.c (mono_arch_output_basic_block): Same.
8568         
8569         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8570
8571 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8572
8573         * simd-intrinsics.c: Implement setter for Vector8us.
8574
8575 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8576
8577         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8578         for dead variables.
8579
8580 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8581
8582         * mini-ppc.c: remove references to the red zone in the prolog
8583         (for systems that don't support it).
8584
8585 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8586
8587         * cpu-ppc64.md: Fixed a few instruction lengths.
8588
8589         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8590         now.
8591
8592 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8593
8594         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8595         basic.exe now.
8596
8597 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8598
8599         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8600
8601 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8602
8603         * mini-ops.h: Added OP_INSERT_I2.
8604
8605         * cpu-x86.md: Same.
8606
8607         * mini-x86.c (mono_arch_output_basic_block): Same.
8608         
8609         * simd-intrinsics.c: Implement setter for Vector8s.
8610
8611         * simd-methods.h: Add the names of get setters of Vector8s.
8612
8613 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8614
8615         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8616         
8617         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8618         parameters.
8619
8620         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8621
8622 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8623
8624         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8625         for PPC64.  An empty program runs now.
8626
8627 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8628
8629         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8630
8631         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8632         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8633         info for JITted code is emitted into a shared library, loadable into gdb.
8634
8635 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8636
8637         * Makefile.am: Changes to build PPC64.
8638
8639         * mini-arch.h: Include mini-ppc64.h on PPC64.
8640
8641 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8642
8643         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8644         in PPC code up to r119147.
8645
8646 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8647
8648         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8649         cpu-ppc64.md: Changes for PPC64.
8650
8651         Based on code submitted by andreas.faerber@web.de at
8652         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8653         X11/MIT license.
8654
8655 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8656
8657         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8658         cpu-ppc64.md: Copied from the corresponding PPC files from
8659         r118846.
8660
8661 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8662
8663         * mini-ops.h: Added OP_ROUND.
8664
8665         * cpu-x86.md: Added round.
8666
8667         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8668
8669         * basic-math.cs: Added test_0_round to test rounding.
8670
8671         Contributed under MIT/X11 license.
8672
8673 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8674
8675         * aot-compiler.c : Fix the Winx64 build.
8676
8677         Contributed under MIT/X11 license.
8678
8679 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8680
8681         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8682         in OP_EXTRACT_R8 to avoid possible stack corruption.
8683
8684 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8685
8686         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8687
8688         * cpu-x86.md: Added extract_r8.
8689
8690         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8691         
8692         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8693         a couple of OP_EXTRACT_I4.
8694
8695         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8696
8697         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8698
8699 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8700
8701         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8702         and not 4.1. 
8703
8704 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8705
8706         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8707         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8708
8709         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8710         are not needed any more.
8711
8712         * mini.h: Remove the unused INS_LIST macros.
8713
8714         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8715         longer needed.
8716
8717         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8718         ir-emit.h.
8719
8720         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8721         mono_alloc_ireg () instead.
8722
8723         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8724         macros.
8725
8726         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8727         on amd64.
8728
8729         * aot-runtime.c (load_aot_module): Disable AOT when running under
8730         CAS.
8731
8732         * mini-amd64.h: Change the monitor fastpath defines to check for
8733         !PLATFORM_WIN32 so they work on *bsd too.
8734
8735         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8736
8737         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8738
8739         * mini.h (MonoCompile): Remove new_ir flag.
8740
8741         * regalloc.h regalloc.c: Remove unused code.
8742
8743         * cpu-*.md: Remove more unused opcodes.
8744
8745         * simple-cee-ops.h simple-mini-ops.h: Removed.
8746
8747         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8748         
8749 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8750
8751         * aliasing.h: Removed.
8752
8753         * *.c: Remove references to aliasing.h and inssel.h.
8754
8755         * mini.c: Remove additional unused functions.
8756
8757         * mini-ops.h cpu-*.md: Remove unused opcodes.
8758
8759 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8760
8761         Remove the old JIT code.
8762
8763         * inssel*.brg: Removed.
8764
8765         * ssa.c abcremoval.c aliasing.c: Removed.
8766
8767         * ssa2.c: Renamed to ssa.c.
8768
8769         * abcremoval2.c: Renamed to abcremoval.c.
8770
8771         * *.c: Removed all !cfg->new_ir code.
8772
8773         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8774         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8775
8776         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8777         
8778 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8779
8780         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8781         to simplify the code and cut back on the number of global symbols in the AOT
8782         file.
8783         
8784         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8785
8786 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8787
8788         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8789         with the got/got_info tables.
8790
8791         * mini.h: Bump AOT file format version.
8792         
8793         * unwind.h: New file, contains definitions for stack unwinding.
8794
8795         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8796         to cfg->unwind_ops.
8797         
8798         * aot-compiler.c: Generalize the emitting of unwind information to use the
8799         information in cfg->unwind_ops.
8800
8801         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8802
8803         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8804         AOT method frames. Enable writing symbols for methods by default.
8805
8806 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8807
8808         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8809         and make it work with vectors of element sizes 1, 2 and 4.
8810
8811         * simd-intrinsics.c: Enable getter for all vectors with element size
8812         1, 2 or 4.
8813
8814         * simd-methods.h: Add the names of other getters.
8815
8816         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8817
8818         * cpu-x86.md: Same.
8819
8820         * mini-x86.c: Same.
8821
8822 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8823
8824         * mini-ppc.h: portability fix.
8825
8826 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8827
8828         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8829         buggy and will overwrite it.
8830
8831 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8832
8833         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8834         Use it to emit local symbols for all methods so AOTed methods show up with
8835         their full name in gdb/valgrind output.
8836
8837 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8838
8839         * mini-ppc.c: portability fixes.
8840
8841 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8842
8843         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8844         entries out of the if (!generic_shared...) code so it is always done.
8845         (mono_class_init_trampoline): Do the patching when running under valgrind
8846         too, newer versions of valgrind have no problems with it.
8847
8848 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8849
8850         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8851         further sections.
8852
8853 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8854
8855         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8856         filters.
8857
8858 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8859
8860         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8861
8862 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8863
8864         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8865
8866         * cpu-x86.md: Same.
8867
8868         * mini-x86.c: Same.
8869
8870         * simd-intrinsics.c: Same.
8871
8872 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8873
8874         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8875
8876 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8877
8878         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8879         to work with more Vector types.
8880
8881 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8882
8883         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8884         store the elemens directly instead of using and intermediate.
8885
8886 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8887
8888         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8889
8890         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8891         to preserve %eax for aot plt trampolines.
8892
8893         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8894         (encode_method_ref): Flag synchronized methods so they won't go through
8895         the AOT trampoline.
8896
8897         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8898         wrappers.
8899
8900         * cpu-ia64.md (jmp): Increase max length.
8901
8902 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8903
8904         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8905         open generic classes.
8906
8907         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8908
8909         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8910         box+brtrue optimization since it causes test failures on x86.
8911
8912 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8913
8914         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8915
8916         * cpu-x86.md: Same.
8917
8918         * mini-x86.c: Same.
8919
8920         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8921         for simd ctor values. 
8922
8923         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8924         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8925
8926 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8927
8928         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8929         LogicalRightShift.
8930
8931         * simd-instrincs.c: Same.
8932
8933         * basic-simd.cs: Same.
8934
8935 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8936
8937         * ratests.cs: Add more tests.
8938
8939         * regalloc2.c (add_spill_code): Handle more corner cases.
8940
8941 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8942
8943         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8944         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8945         both the source an destination of an instruction.
8946
8947 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8948
8949         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8950         wapihandles.c: more portability changes.
8951
8952 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8953
8954         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8955         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8956         safe to execute in a signal handler and the kernel provides better
8957         the info in /proc/self/smaps. Avoid the assert on sigaction during
8958         cleanup.
8959
8960 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8961
8962         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8963         do the bblock linking hack if it is actually needed.
8964
8965         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8966         up linking.
8967
8968         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8969         crash problem is fixed.
8970
8971         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8972         bblocks.
8973
8974         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8975         for catch clauses.
8976         (mini_method_compile): Set the starting value of next_vreg to 
8977         MAX_IREGS + MAX_FREGS when using globalra.
8978
8979         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8980         filter clauses with BB_EXCEPTION_HANDLER.
8981
8982         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8983
8984 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8985
8986         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8987         space for stdcall.  Fixes regressions on Win32.
8988
8989 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8990
8991         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8992         bblocks.
8993         (linear_scan): Remove an assert which doesn't seem to be needed.
8994
8995         * local-propagation.c (mono_local_deadce): Avoid a call to
8996         MONO_DELETE_INS which would screw up the instruction linking.
8997
8998         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8999
9000         * regalloc2.c: Upgrade to work the current JIT code.
9001
9002 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
9003
9004         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
9005         case.
9006
9007         * aot-runtime.c: Remove some dead code.
9008
9009         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
9010         consistency.
9011         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
9012
9013         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
9014         trampolines using sscanf since atoi doesn't work on large unsigned values.
9015
9016         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
9017         Initialize code_size.
9018
9019 2008-11-08  Mark Probst  <mark.probst@gmail.com>
9020
9021         * method-to-ir.c (mini_emit_inst_for_method): Make
9022         Interlocked.CompareExchange work for Int arguments on 32 bit
9023         archs, as well.
9024
9025 2008-11-07  Mark Probst  <mark.probst@gmail.com>
9026
9027         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
9028
9029 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
9030
9031         * main.c Fix MSVC build.
9032
9033         Contributed under MIT/X11 license.
9034
9035 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9036
9037         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
9038         alignment larger than 8 bytes are aligned correctly, too.
9039
9040         * mini.c: Honor the min_align field of MonoClass when laying out
9041         the stack.
9042
9043 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
9044
9045         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
9046
9047         * aot-compiler.c (emit_plt): Fix a warning.
9048         
9049         * aot-compiler.c: Implement ARM support in the binary writer.
9050
9051 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9052
9053         * basic-simd.cs: Add test for getter with byref arg.
9054         Fix the naming of a few tests.
9055         Add missing checks to a test.
9056
9057 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
9058
9059         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
9060
9061         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
9062         most of the full-aot support for monitor enter/exit trampolines.
9063
9064         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
9065         enter/exit trampoline creation functions.
9066
9067         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
9068         make dist.
9069
9070 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
9071
9072         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
9073         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
9074         implement the needed functionality without adding crap to the runtime.
9075
9076 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
9077
9078         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
9079         non-x86 builds.
9080
9081         * mini.c (mono_build_date): New global version holding the build date in
9082         string format.
9083         
9084         * Makefile.am (buildver.c): Generate a file containing the build date.
9085
9086         * main.c: Set the build date from the generated file.
9087
9088         * mini.c (mono_get_runtime_build_info): New helper function returning build
9089         information in a string format.
9090         
9091         * driver.c (mono_main): Print the build date in --version.
9092
9093         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
9094         file when the bind-to-runtime-version option is used.
9095
9096 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9097
9098         * simd-intrinsics.c: Fix bug when using getters and byref args. 
9099
9100 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9101
9102         * simd-methods.h: Rename prefetch methods.
9103
9104         * simd-intrinsics.c: Same.      
9105
9106 2008-11-05  Mark Probst  <mark.probst@gmail.com>
9107
9108         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
9109         sizes.
9110
9111 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9112
9113         * aot-compiler.c: Use the bundled elf header files instead of depending on
9114         the system one.
9115         
9116         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
9117         mempool.
9118
9119         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
9120         on every call.
9121
9122 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
9123
9124         * cpu-x86.md: Add store nta ops.
9125
9126         * mini-ops.h: Same.
9127
9128         * mini-x86.c: Same.
9129
9130         * mini.h: Add an enum for simd prefetch modes.
9131
9132         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
9133         of store. Use the changed code to support store nta.
9134
9135         * simd-intrinsics.c: Add prefetch ops for all vector types.
9136
9137 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9138
9139         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
9140         threads.
9141         
9142         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
9143         names.
9144
9145         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
9146         trampolines.
9147
9148 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9149
9150         * mini-x86.c: Fixed commit.
9151
9152 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9153
9154         * aot-compiler.c (emit_plt): Align the plt section only on x86.
9155
9156 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9157
9158         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
9159         and MONITOR_EXIT, for the ASM fastpaths.
9160
9161         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
9162         available.
9163
9164         * mini.c, patch-info.h: Signature and patch infos for
9165         Monitor.Enter/Exit trampolines.
9166
9167         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
9168
9169         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
9170         Monitor.Enter/Exit ASM fastpath for Linux.
9171
9172 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9173
9174         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
9175
9176         * objects.cs: Add a new test.
9177         
9178         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
9179
9180         * aot-runtime.c (load_method): Run class initialization in the PLT case even
9181         if MONO_LOG_LEVEL is set.
9182
9183         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9184
9185         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9186
9187         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9188         
9189         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9190         of file offsets. Align the sections belonging to the data segment to 
9191         PAGESIZE.
9192
9193 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9194
9195         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9196         elf.h. Port it to amd64.
9197
9198 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9199
9200         * driver.c: Enable SIMD by default.
9201
9202 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9203
9204         * cpu-x86.md: Add prefetch op.
9205
9206         * mini-ops.h: Same.
9207
9208         * mini-x86.c: Same.
9209
9210         * mini.h: Add an enum for simd prefetch modes.
9211
9212         * simd-methods.h: Add prefetch function names.
9213
9214         * simd-intrinsics.c: Add prefetch ops for all vector types.
9215
9216 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9217
9218         * aot-compiler.c (emit_bytes): Speed this up a little.
9219
9220 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9221
9222         * aot-compiler.c: Add JIT time etc. statistics.
9223         
9224         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9225
9226         * mini.h (MonoCompile): Add 'got_offset' field.
9227
9228         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9229         method_got_offsets array.
9230
9231         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9232         wrappers.
9233
9234         * aot-compiler.c (compile_method): Add generic method instances referenced
9235         by the method to the list of methods to be compiled, this is required so if
9236         A<T> references B<T>, and another assembly references A<int>, then it will
9237         also get a copy of B<int>.
9238
9239         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9240         when checking for monitor enter/exit.
9241
9242 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9243
9244         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9245         for Monitor.Enter and Monitor.Exit if enabled.
9246
9247         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9248         Solaris.
9249
9250 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9251
9252         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9253         of an OP_MOVE. Fixes #440046.
9254
9255         * basic-long.cs: Add a new test.
9256
9257 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9258
9259         * mini.h: Add synchronization note for the managed counter-part.
9260
9261         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9262         returns the simd caps of the current cpu.
9263
9264 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9265
9266         * basic-simd.cs: Remove Console.WriteLine.
9267
9268 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9269
9270         * basic-simd.cs: New tests for Vector2ul.
9271
9272 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9273
9274         * simd-intrinsics.c: Add new vector type Vector2ul.
9275
9276 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9277
9278         * basic-simd.cs: New tests for Vector2l.
9279
9280 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9281
9282         * cpu-x86.md: Add long version of most packed int ops.
9283
9284         * mini-ops.h: Same.
9285
9286         * mini-x86.h: Same.
9287
9288         * simd-intrinsics.c: Add new vector type Vector2l.
9289
9290 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9291
9292         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9293
9294         * simd-methods.h: Remove SN_op_BitwiseXor.
9295
9296 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9297
9298         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9299         alignment.
9300
9301 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9302
9303         * basic-simd.cs: Test for Vector2d.
9304
9305         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9306         value.
9307
9308 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9309
9310         * cpu-x86.md: Add double version of all packed float ops.
9311
9312         * mini-ops.h: Same.
9313
9314         * mini-x86.h: Same.
9315
9316         * simd-intrinsics.c: Add new vector type Vector2d.
9317
9318         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9319
9320         * simd-methods.h: Add Duplicate.
9321
9322 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9323
9324         * basic-simd.cs: Test for packing with signed saturation.
9325
9326 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9327
9328         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9329         found in the TYPESPEC table.
9330
9331 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9332
9333         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9334         too.
9335
9336         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9337
9338         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9339         instead of the RVA, since the RVA can be changed by tools like the cil 
9340         stripper.
9341
9342         * method-to-ir.c (mono_method_to_ir2): Ditto.
9343
9344         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9345         (deserialize_variable): Ditto.
9346
9347 2008-10-25  Martin Baulig  <martin@ximian.com>
9348
9349         * debug-mini.c (write_variable): Use
9350         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9351
9352 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9353
9354         * cpu-x86.md: Add unsigned variants of packd and packw.
9355
9356         * mini-ops.h: Same.
9357
9358         * mini-x86.h: Emit the right instruction for packd and packw.
9359         Add unsigned variants of packd and packw.
9360
9361         * simd-intrinsics.c: Packd and packw were used in place of their
9362         unsigned variants. Change that.
9363         Add intrinsics for (Signed)PackWithSignedSaturation.
9364
9365         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9366
9367 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9368
9369         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9370
9371 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9372
9373         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9374
9375         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9376
9377         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9378         sse instructions.
9379
9380         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9381
9382 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9383
9384         * method-to-ir.c, mini.c: Special casing for the synchronized
9385         wrapper for the ldtoken+GetTypeFromHandle case.
9386
9387 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9388
9389         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9390
9391         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9392         created/split bblocks.
9393
9394 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9395
9396         * mini-ops.h: Add packed signed mul high.
9397         
9398         * cpu-x86.md: Same.
9399
9400         * mini-x86.c (mono_arch_output_basic_block): Same.
9401
9402         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9403
9404         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9405
9406 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9407
9408         * basic-simd.cs: Tests for Vector16sb.
9409
9410 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9411
9412         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9413
9414 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9415
9416         * mini-ops.h: Add packed signed min, max and compare greater.
9417         
9418         * cpu-x86.md: Same.
9419
9420         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9421         saturation.
9422
9423         * simd-methods.h: Add CompareGreaterThan.
9424
9425         * simd-methods.h: Remove CompareEquals.
9426
9427         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9428
9429         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9430
9431         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9432         CompareEqual.
9433
9434 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9435
9436         * basic-simd.cs: Fix tests due to change in the API.
9437
9438 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9439
9440         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9441
9442 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9443
9444         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9445
9446         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9447         inst_offset as this has invalid values for LDADDR.
9448
9449 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9450
9451         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9452
9453         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9454
9455 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9456
9457         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9458         for accessing field->data.
9459
9460 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9461
9462         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9463
9464 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9465
9466         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9467
9468         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9469
9470 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9471
9472         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9473         from the cfg mempool.
9474
9475 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9476
9477         * basic-simd.cs: Tests for new methods in Vector8us.
9478
9479 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9480
9481         * mini-ops.h: Add multiply and store high.
9482         
9483         * cpu-x86.md: Same.
9484
9485         * mini-x86.c (mono_arch_output_basic_block): Same.
9486
9487         * simd-methods.h: Same.
9488
9489         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9490         and CompareEqual.
9491
9492 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9493
9494         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9495         mono_class_setup_vtable ().
9496
9497         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9498         mono_class_get_vtable_entry () for accessing klass->vtable.
9499
9500         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9501
9502         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9503         found.
9504
9505         * method-to-ir.c (mono_save_token_info): Don't save references made from
9506         wrappers.
9507
9508         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9509         of generic instances.
9510
9511         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9512
9513 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9514
9515         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9516         OP_JMP depends on the method signature.  Calculate it properly.
9517
9518 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9519         
9520         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9521         called directly.
9522
9523         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9524         instances.
9525         (emit_extra_methods): Add another table mapping method indexes to 
9526         offsets in the extra_method_info table.
9527
9528         * mini.h: Bump AOT file format version.
9529         
9530         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9531         and mono_aot_get_method_from_token () into one function.
9532
9533 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9534
9535         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9536         separate counter.
9537
9538 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9539
9540         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9541         methods.
9542
9543         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9544         disable_aot.
9545
9546         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9547
9548         * mini.h: Bump aot file format version.
9549
9550         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9551         AOT file can contain native code for methods which are not in the METHOD
9552         table. Generate code for non-sharable generic instances of generic methods
9553         found in the METHODSPEC table.
9554         
9555         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9556         encoding generic type handles.
9557
9558         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9559         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9560
9561         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9562         macros + MONO_ADD_INS.
9563
9564         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9565         context as well.
9566
9567         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9568
9569         * mini.h: Bump aot file format version.
9570
9571         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9572
9573 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9574
9575         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9576         platforms, with definable stack alignment value.  Set to 16 now
9577         for all platforms.
9578
9579         * mini.c, mini.h, driver.c: Command line option for disabling
9580         stack alignment.
9581
9582 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9583
9584         * basic-simd.cs: Tests for new methods in Vector4ui.
9585
9586 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9587
9588         * mini-ops.h: Add packed int shuffle.
9589         
9590         * cpu-x86.md: Same.
9591
9592         * mini-x86.c (mono_arch_output_basic_block): Same.
9593
9594         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9595         extract mask, max, min, shuffle.
9596
9597         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9598
9599 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9600
9601         * basic-simd.cs: Tests for new methods in Vector8us.
9602
9603 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9604
9605         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9606         RuntimeTypeHandle, not a TypedReference.
9607
9608 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9609
9610         * simd-intrinsics.c: remove relocations.
9611
9612 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9613
9614         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9615         optimizations from the x86 backend.
9616
9617 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9618
9619         * simd-methods.h, simd-intrinsics.c: debloat method names and
9620         prepare for no relocations.
9621
9622 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9623
9624         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9625         
9626         * cpu-x86.md: Same.
9627
9628         * mini-x86.c (mono_arch_output_basic_block): Same.
9629
9630         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9631         extract mask, max, min and sum of absolute differences.
9632
9633         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9634         method name.
9635
9636 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9637
9638         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9639         Renamed one test for consistency.
9640
9641 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9642
9643         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9644         fix to the code that deal with other blocks.
9645
9646 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9647
9648         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9649
9650 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9651
9652         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9653         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9654         able to process the source reg.
9655
9656 2008-10-16  Martin Baulig  <martin@ximian.com>
9657
9658         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9659
9660         * inssel.brg: Add `OP_HARD_NOP'.
9661
9662         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9663
9664         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9665         `OP_HARD_NOP' instruction when running inside the debugger.
9666
9667         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9668         `OP_HARD_NOP' instruction when running inside the debugger.
9669
9670 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9671
9672         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9673         now works. The issue with the regalloc tripping up no longer
9674         happens.
9675
9676         * simd-intrinsics.c (load_simd_vreg): Same.
9677
9678 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9679         
9680         * basic-simd.cs: Tests for new Vector8ui methods.
9681
9682 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9683
9684         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9685         only for type. This fixes crashes where MonoInst::klass is checked
9686         for ops of type != VTYPE or OBJ.
9687
9688         * simd-intrinsics.c (load_simd_vreg): Same.
9689
9690 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9691
9692         * mini-ops.h: Add ops for packed shuffle/max/avg and
9693         extract mask.
9694         
9695         * cpu-x86.md: Same.
9696
9697         * mini-x86.c (mono_arch_output_basic_block): Same.
9698
9699         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9700         extract mask.
9701
9702         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9703         to emit extract mask op.
9704
9705         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9706         to emit word shuffles.
9707
9708 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9709
9710         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9711         the largest alignment needed by a variable, but at least
9712         sizeof(gpointer).
9713
9714 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9715
9716         * basic-simd.cs: Tests for the fixes in the last commit.
9717
9718 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9719
9720         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9721         no longer handles STACK_PTR input.
9722
9723         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9724
9725         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9726         get_simd_vreg   but handles STACK_PTR input.
9727
9728         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9729         as the input can be an arbitrary pointer.
9730
9731         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9732         LDADDR local optimization directly otherwise use a store op.
9733
9734 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9735
9736         * basic-simd.cs: Tests for dup low and dup high.
9737
9738 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9739
9740         * mini-ops.h: Add dup low and dup high ops.
9741         
9742         * cpu-x86.md: Same.
9743
9744         * mini-x86.c (mono_arch_output_basic_block): Same.
9745
9746         * simd-intrinsics.c (vector4f_intrinsics): Same.
9747
9748 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9749
9750         * basic-simd.cs: Tests for recently added functionality.
9751
9752 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9753
9754         * mini-ops.h: Add remaining sse1 fp ops.
9755         
9756         * cpu-x86.md: Add remaining sse1 fp ops.
9757
9758         * mini-x86.c (mono_arch_output_basic_block): Same.
9759
9760         * mini.h: Add enum for simd FP compare conditions.
9761
9762         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9763
9764         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9765         so the backed can generate the appropriate op.
9766
9767 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9768         This patch squeese one more byte from the SimdIntrinsc struct.
9769
9770         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9771         a a shift amount intead of simply or'ing it.
9772
9773         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9774
9775         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9776         byte so we can have an aditional flags field without increasing struct size.
9777
9778         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9779         against the simd_supported_versions bitmask.
9780
9781         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9782
9783 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9784
9785         * mini.c: remove rawbuffer code (the only use here is unsafe because
9786         it takes locks during signal handling and the kernel now provides much
9787         better info in proc/pid/smaps these days).
9788
9789 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9790
9791         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9792         OP_X86_PUSH_OBJ. Fixes #434620.
9793
9794         * objects.cs: Add a test.
9795         
9796 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9797
9798         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9799         that the packuswb/packusdw don't work with unsigned numbers for what
9800         would be negative numbers in signed format.
9801
9802         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9803         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9804
9805         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9806
9807         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9808
9809         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9810
9811         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9812
9813         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9814         add more ops.
9815
9816         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9817         version as the enum in mini.h.
9818
9819         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9820         for sse3 ops, check the simd_version field if present. This way the code
9821         works with all versions of sse.
9822
9823 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9824
9825         * simd-intrinsics.c: Fixed intrinsic name typo.
9826
9827         * mini.h: Added missing simd exported function.
9828
9829         * basic-simd.cs: Added tests for Vector4ui.
9830         Fixed broken test for Vector16b.
9831
9832 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9833
9834         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9835         the max length to 64.
9836
9837 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9838
9839         * method-to-ir.c: Only do the fast virtual generic method call for
9840         non-wrapper methods.
9841
9842         * mini.h, mini-trampolines.c: The new generic virtual remoting
9843         trampoline handles virtual method calls via the vtable (as done by
9844         the fast virtual generic method calls) to remoting proxies.
9845
9846         * mini.c (mono_jit_create_remoting_trampoline): For generic
9847         methods reate a generic virtual remoting trampoline.
9848
9849         * mini-amd64.h: Enable fast virtual generic method calls again.
9850
9851 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9852
9853         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9854         restore registers when doing tail calls.
9855
9856 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9857
9858         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9859         Vector4ui.
9860
9861 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9862
9863         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9864
9865 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9866
9867         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9868
9869 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9870
9871         * basic-simd.cs: Retrofit for API changes.
9872
9873 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9874
9875         * mini-ppc.c: Handle integer stack arguments for tail calls.
9876
9877 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9878
9879         * optflags-def.h: Removed sse3 optimization.
9880
9881         * driver.c: Same.
9882
9883         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9884         sse3.
9885
9886         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9887
9888         * mini.h: Added enumeration with simd versions.
9889
9890         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9891         for detecting SSE3.
9892
9893         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9894
9895         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9896
9897 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9898
9899         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9900
9901         * basic-simd.cs: Fixed test naming.
9902
9903 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9904
9905         * mini-ops.h: Added ops for packed and saturated math, shifts
9906         and packing/unpacking.
9907
9908         * cpu-x86.md: Added descriptors for the above ops.
9909
9910         * mini-x86.c: Added code to emmit the above ops.
9911
9912         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9913
9914 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9915
9916         * aot-compiler.c (compile_method): Enable AOT for generic code.
9917
9918         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9919
9920 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9921
9922         * mini.c: add a workaround for a common screwup that ends up blamed
9923         to mono (other processes blocking signal delivery).
9924
9925 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9926
9927         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9928         in the LDFLD/STFLD opcodes. Fixes #432673.
9929
9930         * iltests.il.in: Add a new test.
9931
9932 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9933
9934         * mini-arm.c: attach the thread in unmanaged->managed transitions
9935         using delegates (bug #433148).
9936
9937 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9938
9939        * basic-simd.cs: Use new ShuffleSel constants.
9940
9941 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9942
9943         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9944
9945         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9946         only disable simd intrinsics if no sse2 is detected.
9947
9948         * optflags-def.h: Added sse3.
9949
9950         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9951         is disabled.
9952
9953 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9954
9955         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9956         when adding delegate-invoke wrappers.
9957
9958 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9959
9960         * Makefile.am: Reenable the simd tests.
9961
9962 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9963
9964         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9965           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9966           other vreg is allocated to that hreg.
9967
9968         Contributed under MIT/X11 license.
9969
9970 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9971
9972         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9973         yet checked in.
9974
9975 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9976
9977         * basic-simd.cs: New test suite for SIMD intrinsics.
9978
9979         * Makefile.am: Added new tests.
9980
9981 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9982
9983         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9984
9985         * mini-ops.h: Same.
9986
9987         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9988
9989         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9990         using SSE2 aware opcodes.
9991
9992         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9993         is enabled, this code path is only reachable if conversion ops are emmited after
9994         mono_method_to_ir.
9995
9996         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9997
9998         This optimization saves 6 bytes per conversion against the old version.
9999
10000 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10001
10002         * aot-compiler.c (compile_method): Don't skip methods referencing 
10003         generic methods without a corresponding entry in token_info_hash, since
10004         encode_method_ref () can handle all generic methods now.
10005
10006         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
10007         generic context is set.
10008         
10009         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
10010         generic sharing of LDTOKEN.
10011
10012 2008-10-06  Mark Probst  <mark.probst@gmail.com>
10013
10014         * mini-amd64.h: Temporarily disabled fast virtual generic method
10015         calls because it breaks the System.Runtime.Remoting tests.
10016
10017 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10018
10019         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
10020
10021         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
10022         so inlining actually works.
10023         (check_inline_caller_method_name_limit): Ditto.
10024
10025 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
10026
10027         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
10028         64 bit safety (from Olaf Hering and Andreas Farber).
10029
10030 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10031         
10032         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
10033         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
10034         unused virtual call support code.
10035
10036         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
10037         
10038         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
10039         which can't use aot trampolines.
10040         (decode_patch): Don't create aot trampolines for methods which can't use
10041         them.
10042
10043         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
10044         use aot trampolines.
10045
10046         * mini.h: Bump AOT image format version.
10047         
10048 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
10049
10050         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
10051         to save_token_info () since cmethod is inflated for constrained calls.
10052
10053         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
10054
10055 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
10056
10057         * Makefile.am: Add build rules for ppc64.
10058         This avoids the build failing at pedump with unresolved symbols
10059         due to lack of arch_sources. Instead it will now fail earlier
10060         due to lack of cpu-ppc64.md.
10061
10062         Contributed under MIT/X11 license.
10063
10064 2008-10-04  Mark Probst  <mark.probst@gmail.com>
10065
10066         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
10067         tail calls.
10068
10069         * iltests.il.in: Add test case for tail call with many arguments.
10070
10071 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10072
10073         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
10074         to the fast virtual generic method code until the aot case is fixed.
10075
10076 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10077
10078         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
10079
10080 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10081
10082         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
10083         thunks.
10084
10085 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10086         
10087         * simd-intrinsics.c: Forgot to add this one.
10088
10089         * mini-codegen.c: Fix macro in case SIMD is not supported.
10090
10091 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10092         
10093         This patch land initial JIT support for simd intrinsics.
10094
10095         * mini-x86.h: Added new define to make --enable_minimal work on x86.
10096
10097         * Makefile.am: Added simd-intrinsics.c
10098
10099         * simd-intrinsics.c: New file with simd instrinsic related
10100         code.
10101
10102         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
10103
10104         * cpu-x86.md: Add simd related instructions.
10105
10106         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
10107
10108         * driver.c: Added two new --regression variants.
10109
10110         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
10111
10112         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
10113
10114         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
10115         extract some complicated logic to helper functions.
10116
10117         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
10118
10119         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
10120
10121         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
10122         the specialized simplification pass.
10123
10124         * method-to-ir.c (mono_spill_global_vars): Use new macro.
10125
10126         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
10127
10128         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
10129         table.
10130
10131         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
10132         if MONO_ARCH_NEED_SIMD_BANK is defined.
10133
10134         * mini-ops.h: Added the new simd ops.
10135
10136         * mini-x86.c: Added mono_arch_xregname.
10137
10138         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
10139
10140         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
10141
10142         * mini-x86.h: Define simd related MONO_ARCH macros.
10143
10144         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
10145
10146         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
10147
10148         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
10149         MONO_CLASS_IS_SIMD to deal with simd related IR.
10150
10151         * mini.h (MonoInst): Added spill_var to the backend union.
10152
10153         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
10154
10155         * mini.h: Added forward declarations of the new simd fuctions.
10156
10157         * optflags-def.h: Added new optimization names SIMD.
10158
10159         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
10160
10161         * regalloc.h: Added support for working with 3 register banks.
10162
10163         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
10164
10165         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
10166
10167 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
10168
10169         * mini-exceptions.c: remove 64 bit related ifdef clutter.
10170
10171 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10172
10173         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
10174         instead of one on 64 bit systems.
10175
10176         * method-to-ir.c: Remove unused includes.
10177
10178 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
10179
10180         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
10181         cfg->used_int_regs, since the two are different on arm.
10182
10183 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10184
10185         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10186         mono_method_get_vtable_index() to get the vtable index.
10187
10188 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10189
10190         * method-to-ir.c (mono_method_to_ir2): Don't create native
10191         wrappers for array methods, because they're never called (and if
10192         they were called they wouldn't work).
10193
10194 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10195
10196         * method-to-ir.c (mono_method_to_ir2): Array methods are
10197         special-cased and must not be invoked indirectly via the (M)RGCTX
10198         when generic sharing is turned on.  Fixes #431413.
10199
10200 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10201
10202         * method-to-ir.c: When generic sharing is active, call
10203         non-interface virtual generic methods via the standard trampoline.
10204
10205         * mini-trampolines.c: Handle virtual generic shared methods.
10206
10207         * mini.h, mini-x86.c, mini-x86.h: New argument for
10208         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10209         method thunks and which is the trampoline to call if the lookup
10210         fails.  Enable the virtual generic method thunk for x86.
10211
10212         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10213         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10214         argument but assert that it's NULL, because these archs don't yet
10215         implement the virtual generic method thunk.  Changes in the IMT
10216         thunk data structures.
10217
10218 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10219
10220         * aot-compiler.c (emit_globals): Avoid invalid characters in
10221         the static linking symbol.
10222
10223         * objects.cs: Add a test for the range check optimization. Fix warnings.
10224
10225         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10226         optimization from the current JIT.
10227
10228         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10229         later in decompose_array_access_opts () to allow more optimizations.
10230
10231         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10232         mono_decompose_soft_float () for consistency.
10233
10234         * mini-ops.h: Fix arguments of OP_STRLEN.
10235
10236         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10237         into a separate function.
10238         (reset_cast_details): Ditto.
10239         (handle_unbox): Save cast details. Fixes #431254.
10240
10241         * method-to-ir.c: Remove some obsolete FIXMEs.
10242
10243 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10244
10245         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10246
10247 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10248
10249         * mini-codegen.c: More work on macros to make them
10250         ready for multiple regbanks.
10251
10252 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10253
10254         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10255
10256         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10257
10258 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10259
10260         * mini-codegen.c (mono_spillvar_offset): Proper support for
10261         multiple regbanks.
10262
10263 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10264
10265         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10266         the stack overflow changes.
10267
10268 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10269
10270         * mini-codegen.c: Make all bank macros depend on reg_bank.
10271
10272         * mini-codegen.c (mono_local_regalloc): Make free mask
10273         initialization regbank aware.
10274
10275 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10276
10277         * mini-codegen.c (mono_local_regalloc): Extract callee
10278         mask selection to a function and make it regbank aware.
10279
10280 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10281
10282         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10283         code to deal with many regbanks.
10284
10285 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10286
10287         * mini-codegen.c: More fp->regbank changes.
10288
10289 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10290
10291         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10292         of a hardcoded constant.
10293
10294 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10295
10296         * method-to-ir.c (type_from_stack_type): Fix typo.
10297
10298 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10299
10300         * mini-ia64.c (emit_move_return_value): Convert float return values to
10301         double.
10302
10303         * objects.cs: Add a new test.
10304         
10305         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10306         VARARG methods to fix an assert later.
10307
10308         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10309         end so it at least compiles.
10310
10311 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10312
10313         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10314
10315 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10316
10317         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10318         optimization to a new function (emit_optimized_ldloca_ir) and enable
10319         it for both ldloca and ldloca_s.
10320
10321 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10322
10323         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10324         gshared CASTCLASS code.
10325
10326         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10327         amd64, where the libc stack unwinder encounters stack frames referring to
10328         native code in unmapped memory.
10329
10330         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10331         sharing.
10332
10333         * generics.cs: Add new test.
10334
10335 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10336
10337         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10338         add a check that one of the ARM_FPU_ constants is defined.
10339
10340         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10341         
10342         * mini-exceptions.c: Fix build on non-altstack platforms.
10343
10344         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10345         sharing of vtypes.
10346
10347         * ir-emit.h: Add a comment to NEW_PCONST.
10348
10349         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10350
10351         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10352
10353         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10354         after the changes to MonoJitDomainInfo.
10355
10356 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10357
10358         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10359
10360 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10361
10362         * mini-ppc.c: Compiler warning fixes.
10363
10364 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10365
10366         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10367         for pinvokes.
10368
10369 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10370
10371         * exceptions-ppc.c, mini-ppc.h: Compile
10372         mono_arch_handle_altstack_exception() on Darwin, too.
10373
10374 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10375
10376         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10377         work on archs which don't have generic sharing implemented, only
10378         without the vtable_arg.
10379
10380 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10381
10382         * mini.c: Added comment explaining why delegate ctor icall
10383         wrappers are compiled.
10384
10385 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10386
10387         * mini.c: Don't produce trampolines to delegate ctor icall
10388         wrappers but compile them upfront.
10389
10390 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10391
10392         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10393         runtime-set function when going back to managed code. Currently this
10394         is used to set back the protection on the soft ovf pages and/or to
10395         throw the stack overflow exception that happened in unmanaged code.
10396
10397 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10398
10399         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10400         runtime-set function when going back to managed code. Currently this
10401         is used to set back the protection on the soft ovf pages and/or to
10402         throw the stack overflow exception that happened in unmanaged code.
10403
10404 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10405
10406         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10407         the support code for restoring stack protection after stack overflows
10408         that happen in unmanaged code. Don't set the exec permission on the
10409         soft overflow area.
10410
10411 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10412
10413         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10414         delegate->method_ptr is set. Fixes #428054.
10415
10416 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10417
10418         * tests.cs: Rename to ratests.cs.
10419
10420         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10421         emit_get_rgctx_... functions.
10422
10423 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10424
10425         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10426
10427 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10428
10429         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10430         before asserting that method is sharable.
10431
10432 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10433
10434         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10435         whether method needs a static RGCTX wrapper used instead of
10436         complex conditions.
10437
10438         * generic-sharing.c, mini.h: A few functions moved to
10439         metadata/generic-sharing.c.
10440
10441 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10442
10443         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10444         Generic code sharing for value types, which essentially means
10445         treating value type methods like static methods.  The RGCTX is
10446         passed in the same way.
10447
10448 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10449
10450         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10451         opcode when creating multi-dimensional arrays of open types.
10452
10453         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10454         open generic types.
10455
10456         * generics.cs: Add a test.
10457
10458         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10459
10460 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10461
10462         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10463
10464         * mini.c (mini_method_compile): Set it when running under the debugger. 
10465
10466         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10467         vreg optimization if the flag is set.
10468
10469         * driver.c (mono_main): Add --attach= option to pass options to
10470         the attach agent.
10471
10472         * mini.c (sigquit_signal_handler): Start the attach agent.
10473
10474         * ssapre.c: Disable this to save space since it is not yet ported to
10475         linear IR.
10476
10477         * regalloc2.c: Disable this to save space.
10478
10479         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10480
10481 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10482
10483         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10484         the -v option useful again.
10485
10486 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10487
10488         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10489         --break-at-bb.
10490
10491         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10492         arrays of arrays. Fixes #428406.
10493
10494         * method-to-ir.c (mini_emit_castclass): Ditto.
10495
10496         * objects.cs: Add new test.
10497         
10498 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10499
10500         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10501         was wrong at it choked against target_type_is_incompatible for byref types.
10502
10503 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10504
10505         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10506         places.
10507
10508 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10509
10510         * mini-exceptions.c: update a few more exceptions-related counters.
10511
10512 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10513
10514         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10515         new functions to allocate from persistent mempools.
10516
10517 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10518
10519         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10520         multiple register banks in the future.
10521
10522         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10523
10524 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10525
10526         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10527
10528         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10529
10530         * mini.h: Export type_to_eval_stack_type.
10531
10532         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10533         is only ins->klass of byref types.
10534
10535 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10536
10537         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10538         (mini_emit_memcpy2): Ditto.
10539
10540         * mini-amd64.c: Fix a warning.
10541
10542 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10543
10544         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10545         linking.
10546
10547 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10548
10549         * method-to-ir.c: Extract stloc micro-optimization to a
10550         function and apply it to all cases.
10551
10552 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10553
10554         * method-to-ir.c: Don't fail generic code sharing in cases we
10555         already support.
10556
10557 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10558
10559         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10560
10561 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10562
10563         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10564         implementation.
10565
10566 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10567
10568         * trace.c: make tracing more useful and correct, with per-thread
10569         id and indent info.
10570
10571 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10572
10573         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10574         doing a method call and the argument is an R4.
10575
10576 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10577
10578         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10579         generic methods.
10580
10581 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10582
10583         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10584
10585 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10586
10587         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10588         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10589
10590 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10591
10592         * driver.c: Add a --agent argument (not supported yet) to load managed
10593         agent assemblies before loading the main assembly, similarly to how the
10594         Java VM handles agents.
10595
10596 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10597
10598         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10599         function to do stack layout of local variables.
10600
10601 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10602
10603         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10604         calculation.
10605
10606 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10607
10608         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10609         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10610         JIT if DISABLE_JIT is defined.
10611
10612         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10613         defined.
10614
10615 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10616
10617         * iltests.il.in: Disable the fconv test on PPC (the result is
10618         undefined according to ECMA).
10619
10620 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10621
10622         * iltests.il.in: Enable tail call tests for PPC.
10623
10624         * mini.h: Add variable for storing incoming valuetype argument
10625         addresses for tail calls.
10626
10627         * mini-ppc.c: Implement valuetype arguments and return values for
10628         tailcalls on Linux.
10629
10630 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10631
10632         * mini-ppc.c: Partially implement tail calls (struct arguments and
10633         return values not supported).
10634
10635         * method-to-ir.c: Enable tail calls on PPC.
10636
10637 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10638
10639         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10640         runtime-invoke wrappers to work around the problem of them getting
10641         assigned to a random class.
10642
10643         * aot-runtime.c (mono_aot_get_method): Ditto.
10644         
10645 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10646
10647         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10648         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10649
10650 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10651
10652         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10653         until they're implemented properly.
10654
10655         * exceptions-ppc.c: Use arch-independent exception-handling code
10656         instead of custom one.
10657
10658         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10659         for Linear IR.
10660
10661         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10662
10663         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10664         applies when __powerpc__ is defined.
10665
10666 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10667
10668         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10669         methods to their code to avoid computing the full name of wrappers and
10670         doing a lookup in a string hash table.
10671
10672 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10673
10674         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10675         we identify bblocks before method_to_ir () is ran.
10676
10677         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10678         Also avoid optimizing branches pointing to themselves.
10679
10680         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10681
10682 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10683
10684         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10685
10686 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10687
10688         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10689         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10690         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10691         'buf'.
10692
10693         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10694         jumped to the same entry in plt_jump_table.
10695
10696 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10697
10698         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10699         dynamic images.
10700
10701 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10702
10703         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10704         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10705         #421807.
10706
10707 2008-08-29  Geoff Norton  <gnorton@novell.com>
10708
10709         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10710         segment, and doesn't properly handle .space as .text.  Fixes
10711         AOT Mach/ARM
10712
10713 2008-08-29  Geoff Norton  <gnorton@novell.com>
10714
10715         * mini.c: Disable the mach exception handler when running on 
10716         ARM
10717
10718 2008-08-29  Geoff Norton  <gnorton@novell.com>
10719
10720         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10721         globals on Darwin/ARM
10722
10723 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10724
10725         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10726         since too many things depend on it. Instead, call 
10727         mono_runtime_set_no_exec ().
10728         
10729         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10730         the new JIT.
10731
10732         * aot-compiler.c: Add an 'asm-only' AOT option.
10733
10734         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10735                 
10736         * aot-compiler.c (compile_method): Disable gshared support for now as it
10737         doesn't yet work.
10738
10739 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10740
10741         * mini-amd64.h : Fix a compiler warning.
10742
10743         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10744           Changed to use a callback function to retrieve the unwind info.
10745           This avoids problems observed when code blocks were removed by
10746           unloading an app domain.
10747
10748         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10749           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10750           to work properly.
10751
10752         Contributed under MIT/X11 license.
10753
10754 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10755
10756         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10757           case to keep the stack aligned to 8.
10758
10759         Contributed under MIT/X11 license.
10760
10761 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10762
10763         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10764         avoid repeated linear searches.
10765
10766 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10767
10768         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10769         methods it can't handle.
10770         
10771         * aot-compiler.c (add_method): Avoid adding a method twice.
10772         (add_wrappers): Add runtime invoke wrappers for all methods.
10773
10774         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10775         function to create an aot-compatible version of this trampoline.
10776
10777         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10778
10779 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10780
10781         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10782
10783         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10784         with a generic sharing failure.
10785
10786         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10787
10788         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10789         CEE_RETHROW. Fixes #419634.
10790
10791         * mini.c (mono_method_to_ir): Ditto.
10792
10793         * exceptions.cs: Add a new test.
10794         
10795         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10796         to mono_type_stack_size_internal () since some callers might not pass in
10797         an rgctx.
10798
10799         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10800         instrument_prolog. Fixes #419878.
10801
10802         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10803         doubles in soft float mode volatile.
10804
10805 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10806
10807         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10808
10809         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10810         to handle soft float correctly.
10811
10812         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10813         the fast path.
10814
10815         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10816
10817         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10818         to sp, since the generics catch code requires it.
10819
10820         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10821         copying.
10822
10823         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10824         mono_arch_emit_imt_argument ().
10825
10826         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10827
10828         * mini-arm.c tramp-arm.c: Generic sharing updates.
10829
10830 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10831
10832         * mini-arm.c: Fix the arm build.
10833
10834         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10835         handling enums, generic instances and generic sharing.
10836         (mini_type_stack_size_full): Ditto.
10837
10838         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10839         
10840         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10841
10842         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10843
10844         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10845         trampolines.
10846
10847         * mini-arm.c: Various small generic sharing changes.
10848
10849         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10850         this for x86.
10851         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10852         custom code.
10853
10854         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10855         helper function to return a generic class init trampoline.
10856
10857         * method-to-ir.c mini.c: Use it.
10858         
10859         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10860         arch-specfic function to return a generic class init trampoline.
10861
10862         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10863         the GENERIC_CLASS_INIT custom code.
10864
10865         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10866         a fatal error, not a sharing failure.
10867
10868         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10869         needed.
10870
10871         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10872         trampoline argument from MONO_ARCH_VTABLE_REG.
10873
10874         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10875         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10876         argument, and pass the vtable in VTABLE_REG.
10877
10878         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10879         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10880         argument, and pass the vtable in VTABLE_REG.
10881         (mono_arch_create_trampoline_code_full): Remove some special casing for
10882         the rgctx fetch trampoline.
10883
10884         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10885         Fixes #419273.
10886
10887         * iltests.il: Add a test for it.
10888
10889 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10890
10891         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10892
10893         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10894         no longer needed.
10895
10896         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10897         use mono_jit_info_table_find () to avoid recursion.
10898         (mono_delegate_trampoline): Add a sync wrapper here.
10899
10900         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10901         here.
10902
10903         * mini.c (mono_method_to_ir): Ditto.
10904         
10905         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10906         add_sync_wrapper argument. Don't add a sync wrapper here.
10907         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10908
10909         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10910         
10911 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10912
10913         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10914           of nonvolatile registers back from MonoContext to CONTEXT.
10915
10916         Contributed under MIT/X11 license.
10917
10918 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10919
10920         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10921           arguments on Winx64 there are only 4 argument registers.  For this
10922           logic to work the last argument must be pulled from the stack.  
10923
10924         Contributed under MIT/X11 license.
10925
10926 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10927
10928         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10929
10930         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10931         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10932         encode/decode_method_ref ().
10933
10934         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10935
10936         * aot-runtime.c (decode_patch): Ditto.  
10937
10938         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10939         MONO_PATCH_INFO_METHOD.
10940
10941         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10942         MonoGenericJitInfo.
10943
10944         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10945         MonoGenericJitInfo.
10946
10947         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10948
10949         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10950         one from the caller.
10951
10952         * aot-runtime.c (decode_generic_inst): New function to decode and
10953         return a interned generic inst.
10954         (decode_klass_ref): Use it.
10955         (decode_method_ref): Ditto.
10956
10957         * aot-compiler.c (emit_exception_debug_info): Save 
10958         jinfo->has_generic_jit_info too.
10959
10960 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10961
10962         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10963
10964         * iltests.il.in: Add a test for fconv_to_i.
10965
10966         * liveness.c: Disable the liveness2 pass for now to save space.
10967
10968         * regalloc2.c: Include mempool-internals.h to fix warnings.
10969
10970         * aot-compiler.c (encode_method_ref): Encode the context of generic
10971         instance methods.
10972
10973         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10974         the context saved in the aot file.
10975
10976         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10977
10978         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10979
10980         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10981         volatile so they won't be optimized away.
10982
10983 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10984
10985         * ssa.c:
10986         * ssa2.c:
10987         * mini.c:
10988         * regalloc2.c:
10989         * dominators.c: Remove duplicated functions that now are in
10990         mempool-internals.h.
10991
10992 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10993
10994         * aot-compiler.c: Fix warnings.
10995
10996         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10997
10998         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10999
11000         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
11001         as the patch type.
11002
11003         * mini.c (mono_resolve_patch_target): Ditto.
11004         
11005         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
11006         (encode_klass_ref): Add support for encoding VARs/MVARs.
11007
11008         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
11009
11010         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
11011         the handling of the got entries into a separate 'decode_got_entry' function.
11012         Add support for RGCTX_FETCH.
11013
11014         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
11015         clobbered by the trampoline code.
11016
11017         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
11018         not clobbered by the indirect calling code.
11019
11020 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
11021
11022         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
11023         to fix the build.
11024
11025 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
11026
11027         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
11028         signature using the compilation mempool otherwise we would leak it.
11029
11030 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
11031
11032         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
11033         mono_emit_abs_call ().
11034
11035         * patch-info.h: Add GENERIC_CLASS_INIT.
11036
11037         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
11038
11039         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
11040         as their target as a near call.
11041
11042         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
11043         ABS handling code.
11044         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
11045
11046         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
11047         call to a runtime function described by a patch.
11048
11049         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
11050         mono_emit_abs_call, this has the advantage that the ABS handling code in
11051         mono_codegen () can handle them both, and can handle other stuff in the
11052         future without additional code.
11053
11054         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
11055         entry.
11056         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
11057         abs addresses.
11058
11059         * mini.h: Add missing bblock related prototypes.
11060
11061         * mini.h (MonoCompile): Remove unused reverse_inst_list and
11062         reverse_inst_list_len fields.
11063
11064         * mini.c: Refactor this file a bit by moving branch optimizations to 
11065         branch-opts.c.
11066
11067         * method-to-ir.c: Merge generic sharing changes missed earlier.
11068
11069         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
11070
11071         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
11072         shared patches. Process METHODCONST as a shared patch.
11073
11074         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
11075         as it crashes on the 2.0 mscorlib.
11076
11077         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
11078         to cause crashes.
11079         
11080         * aot-compiler.c: Use is_plt_patch () in a few additional places.
11081         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
11082         by IMT.
11083
11084         * aot-compiler.c: Reorganize the got handling code to be a bit more
11085         understandable.
11086
11087 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11088
11089         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
11090         mono_patch_info_equals/hash, and use it to massively simplify
11091         get_plt_index ().
11092
11093         * mini.c (mono_patch_info_hash): Simplify this and add support for
11094         more patch types.
11095
11096         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
11097
11098         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
11099         handling code, since an offset is not enough to identify a trampoline.
11100
11101         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
11102
11103 2008-08-17  Mark Probst  <mark.probst@gmail.com>
11104
11105         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
11106
11107         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
11108
11109         * mini-ops.h: Argument and result types for OVF_CARRY ops.
11110
11111         * decompose.c: PPC decompositions for various ops.
11112
11113         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
11114
11115 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11116
11117         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
11118         call the generic trampoline code using a call, instead of a jump, to
11119         remove some special casing from the generic trampoline code.
11120
11121         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
11122         (mono_codegen): Ditto.
11123
11124         * aot-compiler.c aot-runtime.c: Ditto.
11125
11126         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
11127
11128         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
11129         helper function to find the offset corresponding to a lazy fetch trampoline.
11130
11131         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
11132         when doing generic sharing.
11133
11134         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
11135         places.
11136         
11137         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
11138         mini-trampolines.c to be with the other trampoline creation functions.
11139
11140         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
11141         as it is equal to method->signature in most cases, add a 
11142         mono_emit_method_call_full variant which takes a signature and an imt
11143         argument as well.
11144
11145 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
11146
11147         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
11148         to this function, since it could be computed easily from the method 
11149         argument.
11150         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
11151         more.
11152
11153         * method-to-ir.c mini.c: Remove references to 
11154         compile_generic_method_wo_context.
11155
11156         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
11157         generic method calls.
11158         
11159         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
11160         dimensional non-szarrays.
11161
11162         * mini.c (mini_init): Register mono_array_new_1.
11163
11164         * jit-icalls.c (mono_array_new_1): New jit icall.
11165
11166         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
11167         pointing to the method.
11168
11169         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
11170         method addresses belonging to METHOD_JUMP patches in the 
11171         jump_target_got_slot_hash.
11172         (mono_aot_load_method): Ditto.
11173
11174         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
11175         METHOD_JUMP patches.
11176
11177         * mini.c (mini_create_jit_domain_info): New helper function which 
11178         initializes/frees domain->runtime_info.
11179         (mini_free_jit_domain_info): Ditto.
11180         (mini_init): Install the domain hook functions with the runtime.
11181
11182         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11183         information maintained by the JIT.
11184
11185         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11186         insertion into jump_table_hash into mono_codegen (), also implement proper
11187         locking.
11188
11189         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11190         tail calls, it is already done by the aot code.
11191         
11192         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11193         mechanism on amd64.
11194
11195         * iltests.il.in: Make the jmp test a bit more complex.
11196
11197         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11198         generic instances which doesn't have a token.
11199
11200         * aot-runtime.c (decode_method_ref): Ditto.
11201         
11202         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11203         can handle this case now.
11204         (handle_box): Ditto.
11205
11206 2008-08-15  Geoff Norton  <gnorton@novell.com>
11207
11208         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11209         debugging check.
11210
11211 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11212
11213         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11214         calling generic methods.
11215
11216         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11217
11218         * aot-runtime.c (decode_patch_info): Ditto.
11219
11220         * mini.c (mono_resolve_patch_target): Ditto.
11221         
11222         * patch-info.h: Add METHOD_RGCTX.
11223
11224         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11225
11226 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11227
11228         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11229         arguments in registers.
11230
11231         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11232         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11233
11234         * mini.c (mini_method_compile): Abort aot compilation for generic
11235         methods if generic sharing is disabled.
11236         
11237         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11238         an mrgctx.
11239
11240         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11241         requiring an mrgctx.
11242
11243         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11244         store instructions when converting a vcall to a normal call.
11245
11246         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11247         mono_arch_find_jit_info.
11248
11249 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11250
11251         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11252         avoid calling mono_method_full_name () for every method even if the
11253         env var is not set.
11254         (check_inline_caller_method_name_limit): Ditto.
11255
11256 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11257
11258         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11259         assemblies in one run.
11260
11261         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11262         skipped methods if it is not 0.
11263
11264         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11265
11266 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11267
11268         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11269           MONO_ARCH_HAVE_UNWIND_TABLE.
11270
11271         Contributed under MIT/X11 license.
11272
11273 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11274
11275         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11276           from default optimizaton list on Winx64.
11277
11278         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11279
11280         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11281           the LMF from the MonoJitTlsData structure.
11282
11283         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11284
11285         Contributed under MIT/X11 license.
11286
11287 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11288
11289         * mini.c (sigsegv_signal_handler): Fix the build.
11290
11291         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11292         assembly->aot_module.
11293
11294         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11295         hash table. This simplifies and speeds up a lot of code, and fixes support
11296         for .netmodules.
11297
11298         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11299         with the runtime.
11300
11301         * mini-exceptions.c: Ditto.
11302         
11303         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11304         'native_offset' argument, since these are computed in the 
11305         mono_find_jit_info () function.
11306
11307         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11308         is used by exceptions-ppc.c.
11309
11310         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11311         mono_arch_find_jit_info ().
11312         
11313         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11314         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11315         generic code in mini-exceptions.c.
11316
11317 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11318
11319         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11320
11321         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11322         
11323         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11324         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11325         called while holding the loader lock. Fixes #415608.
11326         (mono_aot_get_method_from_token_inner): Ditto.
11327
11328 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11329
11330         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11331         to reduce differences between this and the generic implementation in
11332         mini-exceptions.c.
11333         (ves_icall_get_frame_info): Ditto.
11334
11335         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11336
11337         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11338         longer neccesarry.
11339
11340         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11341         mono_arch_get_call_filter () and make it non-static, for consistency with the
11342         other architectures.
11343
11344 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11345
11346         * mini.c:
11347         * local-propagation.c:
11348         * mini-x86.c: Correct the name of arch defines.
11349
11350 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11351
11352         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11353         NO_EMULATE_LONG_SHIFT_OPS define.
11354
11355 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11356
11357         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11358         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11359
11360         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11361         MACH fixes. Merged from the 2.0 branch.
11362
11363         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11364
11365         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11366         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11367
11368         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11369
11370         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11371         mono_marshal_get_native_wrapper () signature changes.
11372
11373 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11374
11375         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11376         conversion bug under arm.
11377
11378 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11379
11380         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11381
11382         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11383         with overflow checking.
11384
11385 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11386
11387         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11388         to the genmdesc.pl file
11389
11390 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11391
11392         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11393         arg_array in the soft-float versions of the LOAD/STORE macros.
11394
11395         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11396         implementation.
11397
11398         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11399
11400 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11401
11402         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11403         a float HFA. Fixes #413621.
11404
11405 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11406
11407         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11408         frame_size to args_size. Fixes build.
11409
11410 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11411
11412         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11413         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11414
11415         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11416         the stack are not unaligned. Fixes #413247.
11417         
11418 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11419
11420         * mini.c: update jitted methods performance counters.
11421
11422 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11423
11424         * mini-exceptions.c: increase the exceptions thrown performance
11425         counter in mono_handle_exception ().
11426
11427 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11428
11429         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11430         can work with netmodules.
11431
11432 2008-07-28  Geoff Norton  <gnorton@novell.com>
11433
11434         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11435         regression tests.
11436
11437 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11438
11439         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11440         correct place.
11441
11442 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11443
11444         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11445           The float param registers and other param registers must be the 
11446           same index on Windows x64.
11447
11448         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11449           ArgValuetypeAddrInIReg argument case.  Setting the argument
11450           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11451
11452         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11453           variable computed above as the copy length for arguments of storage
11454           type ArgValuetypeAddrInIReg.
11455
11456         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11457           ArgValuetypeAddrInIReg argument case.  This case will rely on
11458           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11459
11460         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11461           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11462           jump and tail call instructoins as they do not follow the typical call behavior.
11463
11464         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11465           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11466           local variable and pass the local variable by reference to the called method.
11467
11468         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11469           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11470           of a struct is passed in a register it must be saved with the other
11471           volatile argument on the stack.
11472
11473         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11474           frame pointer the stack adjustment value must be saved to the unwind 
11475           info structure.
11476
11477         Contributed under MIT/X11 license.
11478
11479 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11480
11481         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11482         which got lost in the merge.
11483
11484 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11485
11486         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11487         build.
11488
11489         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11490         
11491         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11492         icalls, since they won't be patched.
11493
11494         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11495         different code sequence when running under valgrind to prevent some valgrind
11496         errors.
11497
11498         * iltests.il.in: Add new regression test.
11499
11500         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11501         end with a throw.
11502
11503         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11504         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11505
11506         * iltests.il.in: Add new test.
11507
11508         * aot-compiler.c: Fix some warnings.
11509
11510         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11511         Fixes #412494.
11512
11513 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11514
11515         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11516         (mini_usage_jitdeveloper): Add a missing --wapi option.
11517
11518 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11519
11520         * mini-codegen.c: Simplify the is_fp macros.
11521         (free_up_ireg): Remove, use free_up_reg instead.
11522         (free_up_reg): Fix the fp case.
11523
11524 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11525
11526         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11527         lowered earlier.
11528
11529         * exceptions-x86.c: Merge some changes which seemed to have got lost
11530         in the linear-ir merge.
11531
11532         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11533
11534         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11535         long vreg volatile even if the variable was already created.
11536
11537         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11538         volatile variables.
11539
11540 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11541
11542         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11543
11544         * mini.c (mono_jit_compile_method_inner): Add support for 
11545         MONO_EXCEPTION_BAD_IMAGE.
11546
11547         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11548         mini_method_get_context () returns NULL. Fixes #356531.
11549
11550         * mini.c (mono_method_to_ir): Ditto.
11551         
11552         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11553         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11554
11555 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11556
11557         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11558         in the LDFTN implementation.
11559
11560 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11561
11562         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11563         code, patch calls to icalls, too, even if they're not in the
11564         shared generic code hash.  Fixes #411962.
11565
11566 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11567
11568         * cpu-x86.md: Increase the length of the fcall opcodes.
11569
11570         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11571         calls returning floats.
11572
11573         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11574         on NEWARR.
11575         
11576         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11577         missed earlier.
11578
11579         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11580         into the domain->method_code_hash.
11581
11582         * aot-compiler.c: Fix win32 build.
11583
11584         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11585         
11586         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11587         gshared NEWARR implementation.
11588
11589         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11590
11591         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11592         can be used outside of method_to_ir.
11593
11594         * mini.h (MonoCompile): Add arg_types field.
11595
11596         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11597         
11598         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11599         the values of the local arg_array and param_types array.
11600
11601 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11602
11603         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11604         got accesses might only get generated later when NEWOBJ is decomposed.
11605         
11606         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11607         looking up the native code of the target method when a delegate is called
11608         for the first time.
11609
11610         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11611         optimization.
11612
11613         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11614
11615         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11616         AOT work on platforms without a working dlsym implementation.
11617
11618         * mini.h: Bump AOT image format version.
11619         
11620 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11621
11622         * mini-exceptions.c: Free a MonoType with
11623         mono_metadata_free_type() instead of g_free().
11624
11625         * aot-runtime.c: Free a MonoType.
11626
11627 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11628
11629         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11630         optimization.
11631
11632         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11633         fp stack on x86.
11634
11635 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11636         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11637         profiler hook.
11638
11639 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11640
11641         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11642         NEWOBJ calls on valuetypes.
11643
11644         * iltests.il.in: Add new test.
11645
11646         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11647
11648 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11649
11650         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11651         is no longer needed.
11652
11653         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11654         non register sized integer arguments.
11655         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11656         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11657         emit_memcpy2 ().
11658
11659         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11660         CEE_MONO_RETOBJ.
11661         
11662         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11663         two a binop with different sized arguments is emitted.
11664
11665         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11666         instruction in the ins==NULL case.
11667
11668 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11669
11670         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11671
11672         * mini-x86.c: Fix osx build.
11673
11674         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11675         opcodes as well.
11676
11677         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11678         instruction for non int sized variables.
11679
11680         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11681         implementation.
11682
11683 2008-07-23  Robert Jordan  <robertj@gmx.net>
11684
11685         * method-to-ir.c: Fix MSVC build.
11686
11687 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11688
11689         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11690         a non int sized type, widen it to an int since newer versions of gcc seem to
11691         generate code which needs this.
11692
11693         * ssa2.c abcremoval2.c: Fix warnings.
11694
11695         * *: Merge the Linear IR branch.
11696
11697         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11698         the ChangeLog file there describes all the changes done over the years. 
11699         Further documentation can be found at www.mono-project.com/Linear_IL.
11700
11701 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11702
11703         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11704           The float param registers and other param registers must be the 
11705           same index on Windows x64.
11706
11707         Contributed under MIT/X11 license.
11708
11709 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11710
11711         * mini.c: Make the previous fix GC safe.
11712
11713 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11714
11715         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11716
11717 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11718
11719         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11720           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11721           ArgValuetypeAddrInIReg instead.
11722
11723         Contributed under MIT/X11 license.
11724
11725 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11726
11727         * mini-codegen.c (get_register_spilling): Fix a warning.
11728
11729 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11730
11731         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11732         for types which the initialization fails. Raises the provided exception
11733         at the right stop after cleanup.
11734
11735 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11736
11737         * aot-compiler.c: Free most of the memory allocated during compilation.
11738
11739         * mini.c (mini_parse_debug_options): Fix a leak.
11740         
11741         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11742         during aot compilation.
11743
11744 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11745
11746         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11747         it has too much register pressure.
11748
11749 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11750
11751         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11752
11753 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11754
11755         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11756         on x86.
11757
11758         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11759         on amd64 similar to the way it is done on arm.
11760
11761         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11762
11763         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11764         consistency, normalize error messages, avoid loading aot-only modules in
11765         normal mode.
11766
11767         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11768         for consistency.
11769
11770         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11771
11772 2008-07-11  Martin Baulig  <martin@ximian.com>
11773
11774         * debug-debugger.h
11775         (MonoDebuggerInfo): Add `interruption_request'.
11776
11777 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11778
11779         * aot-compiler.c (emit_plt): Remove some dead code.
11780
11781         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11782
11783         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11784         return the plt info offset belonging to a given plt entry.
11785
11786         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11787         mono_aot_get_plt_info_offset.
11788         
11789         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11790         similar to the amd64 code by makeing jumps through a separate jump table 
11791         instead of embedding the jump addresses into the code.
11792
11793 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11794
11795         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11796         method.
11797
11798 2008-07-10  Martin Baulig  <martin@ximian.com>
11799
11800         * mini.c (mini_method_compile): Disable generics sharing when
11801         running in the debugger.
11802
11803 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11804
11805         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11806
11807         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11808         the local register allocator from running out of registers on x86 when 
11809         using aot.
11810
11811 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11812
11813         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11814         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11815         C4146.
11816
11817         Contributed under MIT/X11 license.
11818
11819 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11820
11821         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11822         speed up the assembler.
11823
11824 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11825
11826         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11827         support.
11828
11829         * mini.c: Move the soft float handling macros a bit earlier, add 
11830         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11831         place.
11832
11833         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11834
11835         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11836         read-only to help catch code allocation requests.
11837         
11838         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11839         and turn it off when using --aot-only or when compiling with --aot=full.
11840
11841         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11842         jump table for switches from the normal domain mempool, not the code
11843         manager.
11844
11845         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11846         unbox trampoline which handles aot-only mode too.
11847
11848         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11849         an AOTed unbox trampoline.
11850
11851         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11852
11853 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11854
11855         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11856         ""
11857
11858         Contributed under MIT/X11 license.
11859
11860 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11861
11862         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11863           the unwind information for the method at the end of the allocated block.
11864           
11865         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11866           MonoCompileArch to hold the unwind info for SEH on Winx64
11867         
11868         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11869           frame pointer info for the method being compiled.
11870           
11871         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11872           the call to mono_exception_from_token.
11873           
11874         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11875           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11876           information is stored a the end of the method block because it is all 32-bit offset based.
11877
11878         Contributed under MIT/X11 license.
11879
11880 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11881
11882         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11883
11884         * wapihandles.c: Fix warnings.
11885
11886         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11887         mode.
11888
11889         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11890         mono_jit_compile_method in aot-only mode since that calls the type 
11891         initializer.
11892         
11893         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11894         get_delegate_invoke_impl in aot-only mode.
11895
11896         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11897
11898 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11899
11900         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11901
11902         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11903         is on by default.
11904
11905         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11906
11907         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11908         init trampoline from the AOT file as well.
11909
11910         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11911         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11912         code.
11913
11914         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11915         mono_init.
11916
11917         * exceptions-amd64.c: Add _full variants for the remaining exception code
11918         creation functions as well, allow emission of relocatable code, remove
11919         caching since that is now done by the caller.
11920
11921         * mini-exceptions.c: Add _full variants for the remaining exception code
11922         creation functions as well, add aot-only support.
11923
11924         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11925         if we can determine a proper token for them.
11926         (add_wrappers): Add a few more wrappers.
11927         (emit_method_code): Remove some dead code.
11928         (emit_trampolines): Emit exception code too.
11929
11930         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11931
11932         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11933         mono_array_new_va which avoids varargs.
11934
11935         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11936
11937         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11938         mono_arch_create_specific_trampoline () in all places.
11939
11940         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11941         a bit so it can be used for other things as well.
11942         
11943         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11944         on demand as well.
11945
11946         * exceptions-amd64.c: Rename the caching from the exception code creation
11947         functions, it is done by the caller instead.
11948         
11949         * exceptions-amd64.c: Change the signature of the exception code creation 
11950         functions to allow the creation of relocatable code later.
11951
11952         * mini-exceptions.c: Add a set of functions to query the various 
11953         runtime-generated exception functions.
11954
11955         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11956         mono_arch_.. () functions.
11957         
11958 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11959
11960         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11961
11962         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11963
11964         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11965         (mini_get_vtable_trampoline): Ditto.
11966
11967         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11968         code in the AOT case by returning the code size and a list of relocations to
11969         the caller.
11970
11971         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11972
11973 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11974
11975         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11976           clean the stack.
11977
11978         Contributed under MIT/X11 license.
11979
11980 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11981
11982         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11983         so the buffer size can be computed correctly. Fixes #404735.
11984
11985         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11986         normally as cfg->debug_info is already freed.
11987
11988 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11989
11990         * mini-amd64.c: For calls returning vtypes in registers, don't store
11991         the return address on the stack, instead allocate a separate local for
11992         it. Fixes #404729.
11993
11994 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11995
11996         * mini-trampolines.c, mini.h: Add an argument to
11997         mono_create_jit_trampoline_in_domain() for turning off the adding
11998         of the sync wrapper.
11999
12000         * mini.c: Use the JIT trampoline without sync instead of
12001         ldftn_nosync in static RGCTX invoke wrappers so that the call can
12002         be patched.
12003
12004 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12005
12006         * driver.c: Turn on GSHARED optimization by default.
12007
12008 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
12009
12010         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
12011         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
12012
12013         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
12014         create a variant of the generic trampoline code callable from AOTed trampolines.
12015
12016         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
12017         trampoline code callable from AOTed trampolines.
12018
12019         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
12020
12021 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12022
12023         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
12024         pass-through manner.
12025
12026         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
12027         and don't fail sharing for them anymore.
12028
12029         * mini-exceptions.c: Handle exceptions in shared generic methods.
12030
12031         * generic-sharing.c: When checking the context of a generic
12032         method, also check its class's context.  Don't treat wrappers as
12033         sharable.
12034
12035         * mini-trampolines.c: Some code factored out to
12036         metadata/generic-sharing.c.  Handle the MRGCTX case.
12037
12038         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
12039         we must deal with the method being of another instantiation of the
12040         class.  Add static rgctx invoke wrappers to generic methods.
12041
12042 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12043
12044         * mini.c: Provide all jit infos of generic shared methods with a
12045         generic jit info.
12046
12047         * mini-exceptions.c: Handle the new situation that a generic info
12048         might be available, but not info about the this/vtable/mrgctx
12049         variable.
12050
12051 2008-07-03  Mark Probst  <mark.probst@gmail.com>
12052
12053         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
12054         generic methods.
12055
12056 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
12057
12058         * dominators.c (check_dominance_frontier): Fix a warning.
12059
12060         * mini.h: Add some missing prototypes.
12061
12062         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
12063
12064         * driver.c (mono_jit_init_version): Correct the comments since the first
12065         argument should be the name of the root domain, not a filename.
12066
12067         * aot-runtime.c (make_writable): Error out if this is called while running
12068         with --aot-only.
12069         (load_aot_module): Ditto.
12070
12071         * aot-compiler.c: Really fix the computation of method indexes.
12072
12073         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
12074         optimizations as this is no longer called frequently.
12075
12076         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
12077         method and the invoke impl code and pass it to the delegate trampoline instead of
12078         just the delegate class.
12079
12080 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
12081
12082         * aot-compiler.c: Fixup the computation of method indexes.
12083         (add_wrappers): Create the base methods of the runtime invoke wrappers using
12084         the method builder infrastructure.
12085
12086         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
12087         has no header.
12088
12089         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
12090         mode, load the method right away instead of creating a trampoline.
12091
12092         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
12093
12094         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
12095         some checks a bit.
12096
12097 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
12098
12099         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
12100         (mono_aot_load_method): Use method_index instead of method->token.
12101
12102         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
12103         can handle icalls etc. properly.
12104
12105         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12106
12107         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
12108
12109         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
12110         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
12111         JIT_ICALL_ADDR patch type.
12112
12113         * patch-info.h: Add JIT_ICALL_ADDR patch type.
12114
12115         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
12116         request flag.
12117         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
12118
12119         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
12120
12121 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
12122
12123         * mini.c: Use domain->jit_code_hash_lock for controlling access to
12124         domain->jit_code_hash.
12125
12126 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
12127
12128         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
12129
12130 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
12131
12132         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
12133         get_this_arg_from_call, let it compute it when needed.
12134
12135         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
12136         gsctx from code only when needed.
12137
12138         * mini-trampolines.c (get_generic_context): Rename this to 
12139         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
12140         it can be called by the arch backends.
12141
12142         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
12143
12144 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
12145
12146         * driver.c (mono_main): Add experimental --aot-only command line option.
12147
12148         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
12149         set.
12150
12151 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
12152
12153         * driver.c (DllMain): Remove mono_module_handle.
12154
12155         Contributed under MIT/X11 license.
12156
12157 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
12158
12159         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
12160         for emitting methods which are not in the source assembly. Detect and report
12161         failure of assembling+linking.
12162         
12163         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
12164
12165         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
12166
12167 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
12168
12169         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
12170
12171 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
12172
12173         * mini.h: Remove some obsolete prototypes.
12174
12175         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
12176
12177 2008-06-24  Mark Probst  <mark.probst@gmail.com>
12178
12179         * mini.c (get_object_generic_inst): Variable-sized arrays are not
12180         supported by Visual Studio, so use alloca().
12181
12182 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12183
12184         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12185         Fixes #402585.
12186
12187 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12188
12189         * mini.c: Fail sharing of a generic method if it contains an open
12190         catch clause (because we don't pass MRGCTXs yet).
12191
12192 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12193
12194         * mini.c: When compiling a method with generic sharing, insert the
12195         method instantiated with an all-Object generic context into the
12196         jit info table, instead of the context of the first instantiation
12197         of the method we happen to compile.
12198
12199 2008-06-18  Martin Baulig  <martin@ximian.com>
12200
12201         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12202         `major_version' and `minor_version'.
12203
12204 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12205
12206         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12207         mono_method_is_generic_sharable_impl() takes an additional
12208         argument specifying whether to treat type variables as reference
12209         types.
12210
12211 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12212
12213         * mini.h: Removed obsolete prototypes.
12214
12215 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12216
12217         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12218         already handle them.
12219
12220 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12221
12222         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12223         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12224         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12225         tramp-x86.c: Added a MonoGenericContext* argument to
12226         mono_arch_get_unbox_trampoline() so that it can call other
12227         functions which require it.
12228
12229 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12230
12231         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12232         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12233         mono_arch_get_this_arg_from_call() takes a
12234         MonoGenericSharingContext* as well.
12235
12236 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12237
12238         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12239         implement generic sharing of unbox.
12240
12241 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12242
12243         * mini.c: Don't compute the vtable to determine whether a field is
12244         special static, because it might not work for open types.
12245
12246 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12247
12248         * mini.c: Removed the unused token_type and token_source arguments
12249         from get_runtime_generic_context_ptr().
12250
12251 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12252
12253         * mini.c (ADD_BINOP): fix the build
12254
12255 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12256
12257         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12258         a widening op.
12259
12260 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12261
12262         * mini.h: Removed class relations enum that's not used anymore.
12263
12264 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12265
12266         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12267
12268         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12269         the lazy fetch trampoline access code.
12270
12271 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12272
12273         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12274
12275 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12276
12277         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12278
12279         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12280
12281         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12282
12283 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12284
12285         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12286         intrinsics.
12287
12288         * mini-ops.h: Add MIN/MAX_UN opcodes.
12289
12290         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12291         intrinsics.
12292
12293         * basic-math.cs: Add more min/max tests.
12294
12295         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12296
12297 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12298
12299         * mini.c: Small fix in the prologue of emit_castclass.
12300
12301 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12302
12303         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12304
12305         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12306         do not work even for unsigned types. Fixes #400014.
12307
12308         * basic-math.cs: Add regression tests for unsigned Min/Max.
12309
12310 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12311
12312         * mini.c: Added additional context_used argument to several
12313         functions, which will be needed for sharing generic methods.  Use
12314         GET_RGCTX macro wherever appropriate.  Declare only one
12315         context_used in mono_method_to_ir().
12316
12317 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12318
12319         * mini.c, generic-sharing.c: Removed generic class relations.
12320
12321         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12322         functions due to MRGCTX changes.
12323
12324 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12325
12326         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12327         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12328         with calculated IMT.
12329
12330         * mini.c: Generic sharing of calls via generic interfaces.
12331
12332         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12333         generic method with non-constant MonoGenericContext*.  Instead,
12334         the context is taken out of the method itself.
12335
12336 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12337
12338         * mini.c: Generic sharing of ldvirtftn.
12339
12340 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12341
12342         * mini.c: Generic sharing of ldftn.
12343
12344 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12345
12346         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12347
12348 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12349
12350         * mini.c: Generic sharing of the special case of ldtoken followed
12351         by a call to GetTypeFromHandle.
12352
12353 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12354
12355         * mini.c: Generic sharing of box for nullable types.
12356
12357 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12358
12359         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12360         are passed on the stack. Fixes #324807.
12361
12362 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12363
12364         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12365         for the ArgValuetypeAddrInIReg case.
12366
12367         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12368         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12369
12370         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12371         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12372         local variable and pass the local variable by reference to the called method.
12373           
12374         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12375         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12376
12377         Contributed under MIT/X11 license.
12378
12379 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12380
12381         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12382
12383         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12384         everything.
12385
12386 2008-06-10  Martin Baulig  <martin@ximian.com>
12387
12388         * debug-mini.c
12389         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12390
12391 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12392
12393         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12394         possible error when no arguments are passed.
12395
12396         Contributed under MIT/X11 license.
12397
12398 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12399
12400         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12401         where the file name is NULL.
12402
12403 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12404
12405         * mini.c: Fix s390 build.
12406
12407 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12408
12409         * trace.c (mono_trace_parse_options): Fix warnings.
12410
12411         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12412
12413 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12414
12415         * mini.c (remove_block_if_useless): Avoid printing the method name.
12416         
12417         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12418         MONO_INST_NEW.
12419
12420         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12421         LMF. Not yet used.
12422
12423         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12424         translated code after it has been patched.
12425
12426 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12427
12428         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12429         avoid problems during code patching on SMP systems.
12430         (emit_call): Avoid adding a patch info which is already added by 
12431         emit_call_body.
12432         (mono_arch_emit_exceptions): Ditto.
12433
12434 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12435
12436         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12437         MONO_TYPE_ISSTRUCT already checks for it.
12438
12439 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12440
12441         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12442           structs with floats on Winx64 the float registers are not used.  
12443           The integer registers are always used..
12444         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12445           only one register will be used and only if the size of the struct 
12446           is 1,2,4, or 8 bytes.
12447
12448         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12449           to work for Winx64.
12450
12451         Contributed under MIT/X11 license.
12452
12453 2008-06-05  Martin Baulig  <martin@ximian.com>
12454
12455         * debug-debugger.c (debugger_lookup_class): Also call
12456         mono_class_setup_methods() here; we're only called from RTI.
12457
12458 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12459
12460         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12461         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12462         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12463         Post-process object files and add dtrace-generated object, if necessary.
12464
12465         Contributed under MIT/X11 license.
12466
12467 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12468
12469         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12470         element class.
12471
12472         * mini.c: Generic sharing for unbox.any and castclass.
12473
12474 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12475
12476         * mini.c: Ignore tailcall prefix in shared generic code and when
12477         doing calls which require a vtable/rgctx argument.
12478
12479 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12480
12481         * mini.c: Don't free the JIT info.
12482
12483         * driver.c: Changes in the JIT info table testing code.
12484
12485 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12486
12487         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12488         interruption. Fix some warnings.
12489
12490         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12491         interruption_checkpoint.
12492
12493 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12494
12495         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12496         from embedding applications.
12497
12498 2008-06-02  William Holmes  <billholmes54@gmail.com>
12499
12500         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12501           reserving 32 bytes on the stack when making calls. 
12502
12503         Contributed under MIT/X11 license.
12504
12505 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12506
12507         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12508         the linear IL branch.
12509
12510         * driver.c: Print out more information for --version on arm.
12511
12512 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12513
12514         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12515         bb_exit instead, since out of line bblocks might not actually be emitted
12516         out-of-line.
12517         
12518         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12519         maximum epilog size for out of line bblocks if tracing is enabled.
12520
12521         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12522
12523 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12524
12525         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12526
12527 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12528
12529         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12530         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12531         opcodes.
12532
12533 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12534
12535         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12536         the 'value' to store is a constant.
12537
12538         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12539
12540         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12541         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12542
12543 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12544
12545         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12546         for accessing method->generic_container.
12547
12548 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12549
12550         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12551         
12552         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12553
12554         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12555
12556         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12557         fails.
12558
12559 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12560
12561         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12562
12563         * mini.c: Handle the case when mono_class_vtable () fails.
12564
12565 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12566         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12567         the stat profiler.
12568
12569 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12570
12571         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12572         together with domain sharing.
12573
12574 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12575
12576         * mini.c: Treat callvirts to final methods like non-virtual calls
12577         when doing generic sharing, i.e. look them up in the runtime
12578         generic context.
12579
12580 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12581
12582         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12583         with computed types (for generic sharing).
12584
12585         * mini.c: Generic sharing for mkrefany and refanyval.
12586
12587 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12588
12589         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12590         possible.
12591
12592         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12593         the generic sharing code.
12594         
12595         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12596         when needed.
12597
12598 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12599
12600         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12601
12602 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12603
12604         * driver.c: updated copyright date
12605
12606 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12607
12608         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12609         needed.
12610
12611 2008-05-19  Martin Baulig  <martin@ximian.com>
12612
12613         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12614         pointing to the new `_mono_debug_using_mono_debugger' variable.
12615
12616         * driver.c
12617         (mono_main): Check mono_debug_using_mono_debugger() rather than
12618         the `MONO_INSIDE_MDB' environment variable to check whether we're
12619         inside the debugger.
12620
12621 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12622
12623         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12624         argument.
12625
12626 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12627
12628         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12629
12630         * mini.c: Added mini_assembly_can_skip_verification. This
12631         function checks if the assembly requested to skip verification. 
12632         Fixes part of #387274.
12633
12634 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12635
12636         * mini.c (mini_get_method): Disable the check for open generic classes when
12637         using generic sharing.
12638
12639         * generics.cs: Add a test for #387034.
12640
12641         * mini.c (mini_get_method): Check whenever the method class is an open generic
12642         type, and return NULL in that case, causing a verification error. Fixes
12643         #384123.
12644
12645 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12646
12647         * driver.c (mono_main): Revert r102623. The right
12648         thing to do is to enable the verifier under verifiable
12649         unless a --security flag was passed.
12650
12651         We need this non-trivial behavior for --verify-all otherwise
12652         mcs-compileall won't be able to use it. As it needs everything to
12653         be verified under validil.
12654
12655 2008-05-06  Martin Baulig  <martin@ximian.com>
12656
12657         Fix #383749.
12658
12659         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12660         (mono_debugger_thread_cleanup): Likewise.
12661         (mono_debugger_extended_notification): Likewise.
12662
12663 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12664
12665         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12666         against both inflated and non-inflated methods. We need to check against the
12667         generic definition for cases where the instantiated method is not visible.
12668         We need to check against the inflated types for cases where the instantiation
12669         changes any super type. This fixes #382986.
12670
12671         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12672         that check for visibiliy as generic params only appears as the type subject
12673         of tokens on call opcodes. Field manipulation and ldftn must always
12674         target an exact type.
12675
12676 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12677
12678         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12679         if no related --security flag is passed.
12680
12681 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12682
12683         * mini-arch.h: Prepare support for ppc64.
12684
12685         Contributed under MIT/X11 license.
12686
12687 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12688
12689         * aot-runtime.c: Prepare support for ppc64.
12690
12691         Contributed under MIT/X11 license.
12692
12693 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12694
12695         * mini-ops.h: Prepare support for ppc64.
12696
12697         Contributed under MIT/X11 license.
12698
12699 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12700
12701         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12702
12703         Contributed under MIT/X11 license.
12704
12705 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12706
12707         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12708         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12709         assemblies on windows.
12710
12711 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12712
12713         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12714         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12715         * main.c: Use UTF-8 encoded command line instead of Windows default code
12716         page on Windows to support Unicode.
12717         * driver.c (DllMain): New function for mixed-mode assembly support.
12718         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12719         export __stdcall functions without decoration.
12720
12721         Contributed under MIT/X11 license.
12722
12723 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12724
12725         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12726         saving it very early.
12727
12728 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12729
12730         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12731         deleted.  The only way to access the new RGCTX is via the
12732         trampline.
12733
12734         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12735         vtable instead of the RGCTX to static methods.
12736
12737         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12738         accessing the new RGCTX.
12739
12740         * generic-sharing.c: There is no separation between self, type
12741         arguments and other types in the RGCTX anymore.
12742
12743 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12744
12745         * mini-amd64.c (add_general): Remove previous stack adjustment.
12746         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12747         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12748         for 32 bytes of stack space reserved for all calls.
12749         
12750         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12751         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12752         adjustment.
12753         
12754         Code contributed under MIT/X11 license.
12755
12756 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12757
12758         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12759         against the root definition, peeling out method and type instantiations.
12760         Cache verify success results, code that fails verification is still
12761         checked multiple times.
12762
12763 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12764
12765         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12766
12767 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12768
12769         * mini-amd64.c (add_general): Always increment stack on Win64.
12770         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12771         on Win64.
12772         
12773         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12774         stack based argument handling on Win64.
12775         
12776         Code contributed under MIT/X11 license.
12777
12778 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12779
12780         * Makefile.am (version.h): Add support for git-svn.
12781
12782 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12783
12784         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12785         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12786         avoiding allocations and libc functions which might deadlock.
12787         
12788         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12789         'no-gdb-backtrace' option is set.
12790
12791         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12792
12793         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12794
12795 2008-04-21  Martin Baulig  <martin@ximian.com>
12796
12797         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12798         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12799
12800 2008-04-21  Martin Baulig  <martin@ximian.com>
12801
12802         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12803         `thread_vtable', `event_handler_ptr' and `event_handler'.
12804
12805 2008-04-21  Martin Baulig  <martin@ximian.com>
12806
12807         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12808         allows delayed initialization of the `executable_code_buffer' when
12809         attaching.
12810
12811 2008-04-21  Martin Baulig  <martin@ximian.com>
12812
12813         * mini.h (mono_debugger_create_notification_function): Removed.
12814         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12815
12816         * mdb-debug-info64.s
12817         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12818
12819         * mdb-debug-info32.s
12820         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12821
12822         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12823         currently only works on x86 and x86_64, so don't create it on ppc.
12824
12825 2008-04-21  Martin Baulig  <martin@ximian.com>
12826
12827         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12828
12829         * mini.c
12830         (mini_method_compile): In the fp elimination check, check
12831         `debug_options.mdb_optimizations' in addition to
12832         mono_debug_using_mono_debugger().       
12833
12834         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12835         disable some JIT optimizations which are only disabled when
12836         running inside the debugger.
12837         Added `--help-debug' option to describe the debugging options.
12838         (parse_debug_options): New static function to parse the `--debug'
12839         options, so we can easily add more stuff in future.
12840
12841 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12842
12843         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12844         the method has no body.
12845
12846 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12847
12848         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12849         assembly is not allowed in MSVC 64-bit compiler. 
12850         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12851         as we get floating point exceptions everywhere.
12852         
12853         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12854         correctly align arguments for call to throw_exception.
12855         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12856         
12857         Code contributed under MIT/X11 license.
12858
12859 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12860
12861         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12862
12863 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12864
12865         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12866
12867         * mini-amd64.c (NEW_INS): Set cil_code.
12868
12869         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12870         from mini-amd64.c so all debugger related logic is in one place.
12871
12872         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12873         later won't have a random ip assigned to them.
12874
12875 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12876
12877         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12878         the arch specific function initializes code_size.
12879         (mono_create_delegate_trampoline): Ditto.
12880
12881         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12882         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12883         platforms.
12884
12885         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12886         running under the debugger.
12887
12888         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12889         debugger.
12890
12891         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12892         debugger. Also move the disabling of optimizations here from driver.c.
12893         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12894         debugger.
12895
12896         * mini.h (MonoCompile): Add a few new flags.
12897
12898 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12899
12900         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12901         so the cil_code field of created MonoInst's is properly set.
12902         (mini_select_instructions): Ditto.
12903
12904         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12905         (MONO_INST_NEW_CALL): Ditto.
12906
12907         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12908         in many places so the ins->cil_code field is properly initialized.
12909
12910         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12911         place.
12912
12913 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12914
12915         * mini.c (mini_method_compile): Print a different message when compiling a 
12916         shared method.
12917         
12918         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12919         > 1.
12920
12921 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12922
12923         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12924         SSE2 instructions.
12925
12926         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12927         
12928 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12929
12930         * mini.c (handle_stack_args): Make this return void since its return value was
12931         never used. Also set cfg->unverifiable for invalid IL instead of calling
12932         G_BREAKPOINT ().
12933
12934 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12935
12936         * mini.c: Make sure "this" is live in catch clauses with type
12937         variables in shared generic code.
12938
12939 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12940
12941         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12942         generic_class_is_reference_type() to ensure the proper behaviour
12943         when sharing generic code and the type in question is a type
12944         argument.
12945
12946 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12947
12948         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12949         race conditions when printing thread dumps. Fixes #377738.
12950
12951 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12952         
12953         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12954         shows up when both MonoInst arguments can cause aliasig.
12955         There is likely no way in the current JIT to trigger this problem, but
12956         it showed up in the development of generics sharing, when in a new
12957         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12958         When the generics sharing code will be committed, its tests will be
12959         valid also for this bug.
12960
12961 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12962
12963         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12964         PATCH_INFO_METHOD.
12965
12966         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12967         NULL.
12968
12969 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12970
12971         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12972         use a more detailed exception message for InvalidCastException.
12973
12974         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12975
12976         * driver.c (mono_main): Add --debug=casts option to turn on better 
12977         InvalidCastException message details.
12978
12979         * mini.c (mini_get_debug_options): New helper function to return the address of
12980         the debug_options variable.
12981
12982         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12983         the jit_tls TLS variable.
12984
12985         * mini.c (mono_jit_tls): New TLS variable.
12986
12987         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12988         option is used.
12989
12990 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12991
12992         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12993
12994         * mini.c: Removed verifer related stuff, code moved to verify.c.
12995
12996         * driver.c: Using code from verify.c instead of mini.c.
12997
12998 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12999
13000         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
13001         longer valid.
13002
13003 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
13004
13005         * mini.c (check_for_method_verify): Enabling verification of
13006         corlib if mono_verify_all is set. Bugs in the verifier preventing that
13007         have been fixed.
13008
13009 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
13010
13011         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
13012         caller saved registers as well.
13013         
13014         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
13015         saved registers as well.
13016
13017 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
13018
13019         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
13020
13021         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
13022         code.
13023
13024 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
13025
13026         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
13027         to get_call_info.
13028         (get_call_info): Take a gsctx argument instead of 'cfg'.
13029
13030 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
13031
13032         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
13033         mono_verify_all is set.
13034
13035         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
13036
13037         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
13038
13039 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
13040
13041         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
13042         an exception.
13043
13044         * driver.c mini.c mini.h: Add a --verify-all development option to test the
13045         verifier and the code generated by the compiler.
13046
13047 2008-03-25  Mark Probst  <mark.probst@gmail.com>
13048
13049         * mini.c: Generic sharing of the non-nullable case of the box
13050         instruction.
13051
13052 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
13053
13054         * inssel.brg: Fix the build.
13055
13056         * iltests.il.in: Add a test for lconv.ovf.u8.un.
13057
13058 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
13059
13060         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
13061         Array:Address. Fixes #372410.
13062
13063         * iltests.il.in: New tests for readonly prefix.
13064
13065 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
13066
13067         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
13068         mini-trampolines.c.
13069
13070         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
13071         mini-exceptions.c.
13072
13073         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
13074         
13075         * mini.c (mono_decompose_op_imm): New helper function.
13076
13077         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
13078         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13079         return value.
13080
13081         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13082         mono_arch_output_basic_block. Fix warnings.
13083
13084         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
13085         for now.
13086
13087 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
13088
13089         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
13090         since the extra frame is now detected automatically inside the loop.
13091
13092         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
13093         opts which are now in mono_peephole_ins ().
13094         
13095         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
13096
13097         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
13098         frames and skip duplicate managed-to-native frames. Fixes #367665.
13099
13100         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13101         opts which are now in mono_peephole_ins ().
13102         (mono_arch_peephole_pass_2): Ditto.
13103
13104         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
13105
13106         * mini-codegen.c (mono_peephole_ins): New helper function containing the
13107         arch independent peephole optimizations.
13108
13109         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13110         opts which are now in mono_peephole_ins ().
13111
13112         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
13113         
13114         * mini-s390.c (mono_arch_output_basic_block): Fix build.
13115
13116         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
13117         pattern.
13118
13119         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
13120         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
13121         opcode. 
13122
13123 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
13124
13125         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
13126         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13127         return value.
13128
13129         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13130         mono_arch_output_basic_block. Fix warnings.
13131
13132 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13133
13134         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13135         conv.ovf.u.un.
13136
13137 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13138
13139         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13140         conv.ovf.u.un.
13141
13142         * iltests.il: Add new tests.
13143
13144 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
13145
13146         * mini.c: Removed Windows version macros.
13147
13148 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13149
13150         * generic-sharing.c: Put reflection types in the extensible part
13151         of the runtime generic context.
13152
13153         * mini.c: Generic sharing of the GetTypeHandle special case of the
13154         ldtoken instruction.
13155
13156 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13157
13158         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
13159
13160         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
13161         
13162         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
13163         consistency with the other version on the linear IR branch.
13164
13165         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
13166
13167         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
13168
13169         * iltests.il.in: Add new tests.
13170
13171 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
13172
13173         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
13174
13175         * iltests.il.in: Add new tests.
13176
13177 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13178
13179         * mini.c: Two variables with the same name were declared in
13180         nesting contexts and one wasn't initialized.  Fixed.
13181
13182 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13183
13184         * mini.c: Generic sharing of the initobj instruction.
13185
13186 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13187
13188         * mini.c: make the test to optimize ldtoken from typeof() more
13189         precise.
13190
13191 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13192
13193         * mini.c: Generic sharing of the initobj instruction for reference
13194         types.
13195
13196 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13197
13198         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13199         the mono_breakpoint_clean_code() code to perform bound checks.
13200
13201 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13202
13203         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13204         mono_arch_patch_callsite() to include the start of the managed method
13205         to be able to perform bound checks.
13206
13207 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13208
13209         * mini.c: Generic sharing for the isinst instruction.
13210
13211 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13212
13213         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13214         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13215         with the runtime generic context argument.
13216
13217         * mini.c: Share calls to several types of unsharable methods by
13218         putting the address of the method code in the runtime generic
13219         context and doing an indirect call.
13220
13221         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13222         to switches.
13223
13224 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13225
13226         * generic-sharing.c: Change due to a change in the runtime genric
13227         context API.
13228
13229 2008-03-15  Martin Baulig  <martin@ximian.com>
13230
13231         * tramp-x86.c
13232         (mono_arch_nullify_class_init_trampoline): Add call to
13233         mono_breakpoint_clean_code() to make things work when running
13234         inside the debugger.
13235
13236         * tramp-amd64.c
13237         (mono_arch_nullify_class_init_trampoline): Add call to
13238         mono_breakpoint_clean_code() to make things work when running
13239         inside the debugger.
13240
13241 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13242
13243         * inssel-long.brg (reg): Fix 64 bit build.
13244
13245 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13246
13247         * mini.c, mini.h: Share static generic code by passing it an
13248         implicit argument pointing to the runtime generic context.
13249
13250         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13251         inssel-long32-mips.brg: New opcodes for calling shared static,
13252         which need to be passed the runtime generic context.
13253
13254         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13255         argument on the stack in the prologue if needed.  New function for
13256         finding the runtime generic context argument from the registers
13257         saved by the trampoline.
13258
13259         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13260         runtime generic context argument.
13261
13262         * tramp-amd64.c: Also restore the register used for the runtime
13263         generic context argument.
13264
13265         * mini-trampoline.c: Resolve shared static calls by consulting the
13266         runtime generic context via the new argument.
13267
13268         * generic-sharing.c: Add an argument to sharability-checking
13269         functions that specifies whether type variables should be treated
13270         as sharable type arguments.
13271
13272         * inssel-x86.brg: Removed a superfluous, buggy rule.
13273
13274         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13275         to switches.
13276
13277 2008-03-14  Martin Baulig  <martin@ximian.com>
13278
13279         * debug-debugger.c (main_thread_handler): Call
13280         mono_runtime_run_main() without sending any notifications.
13281
13282         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13283
13284 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13285
13286         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13287
13288 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13289
13290         * tramp-x86.c: Fixed register restore offsets in the trampoline
13291         code for ECX and EDX.
13292
13293 2008-03-12  Geoff Norton  <gnorton@novell.com>
13294
13295         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13296         different ucontext_t implementations.
13297         * exceptions-arm.c: Use the above defines to get exceptions working on 
13298         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13299         * mini-arm.c: Implement iPhone icache support (based on a patch by
13300         Luke Howard lukeh@padl.com)
13301
13302 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13303
13304         * mini.c: Enable generic sharing of calls to non-static
13305         non-interface non-generic non-value-type methods.
13306
13307         * mini-trampolines.c: Resolve calls from shared generic code.
13308
13309 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13310
13311         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13312
13313         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13314
13315 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13316
13317         * mini.c: some fixes for the AOT compiler.
13318
13319 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13320
13321         * cpu-amd64.md: Add clob:1 to some float opcodes.
13322
13323 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13324
13325         * mini.h: Added MiniVerifierMode enumeration.
13326
13327         * mini.c: Added mini_verifier_set_mode to control
13328         the usage of the new verifier.
13329
13330         * mini.c (mono_method): Integrated the new verifier.
13331
13332         * driver.c: Extended --security option with validil and
13333         verifiable options to activate the new verifier.
13334
13335 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13336
13337         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13338         optimization to ctors taking 0 or 2 arguments too.
13339
13340         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13341         a bit.
13342
13343         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13344
13345         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13346
13347 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13348
13349         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13350         non-aot case as well.
13351
13352         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13353
13354         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13355         changes.
13356
13357         * aot-compiler.c (encode_patch): Ditto.
13358
13359         * mini.h (G_MININT32): Fix the definition of this.
13360
13361 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13362
13363         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13364
13365         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13366
13367 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13368
13369         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13370         methods returning vtypes in registers.
13371         (mono_arch_allocate_vars): Ditto.
13372
13373         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13374
13375         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13376
13377         * generics.cs: Add a test from the linear IR branch.
13378
13379         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13380
13381         * mini.c (inline_method): Cache failed inline attempts.
13382
13383 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13384
13385         * mini.c: For shared methods of generic classes put the location
13386         of "this" into the MonoGenericJitInfo.
13387
13388         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13389         register out of a MonoContext by register number.  Add the generic
13390         sharing context as an argument to mono_arch_find_this_argument().
13391
13392         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13393         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13394         for new arch function.
13395
13396         * mini-exception.c: Handle open exception clauses in shared
13397         generic code.
13398
13399         * mini-trampolines.c: Supply additional argument to
13400         mono_arch_find_this_argument().
13401
13402 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13403
13404         * Makefile.am (regtests): Run the bench.exe tests last.
13405
13406 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13407
13408         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13409         a bit.
13410
13411 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13412
13413         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13414         with MS.
13415
13416         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13417         
13418         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13419
13420         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13421         whose class has no cctor.
13422
13423         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13424
13425 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13426
13427         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13428         unverified.
13429
13430 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13431
13432         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13433         to be in sync with the code on the linear IR branch.
13434
13435         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13436
13437         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13438
13439 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13440
13441         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13442
13443         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13444
13445         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13446
13447         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13448
13449         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13450         
13451         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13452         body.
13453
13454 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13455
13456         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13457         OP_LOADR4_MEMBASE emission.
13458
13459         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13460         (mono_spillvar_offset_float): Ditto.
13461
13462         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13463
13464         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13465         emission.
13466
13467         * basic-long.cs: Add regression tests for them.
13468
13469         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13470         use.
13471         (mono_arch_allocate_vars): Fix representation of single-precision float
13472         argument.
13473         (mono_arch_output_basic_block): Ditto.
13474
13475         * inssel-mips.brg: Ditto, remove duplicate items.
13476
13477         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13478         arguments of tail calls as on other platforms.
13479         (mono_arch_output_basic_block): Handle tail calls.
13480
13481         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13482         register.
13483
13484         * objects.cs (test_5_pass_static_struct): Add test for it.
13485
13486         Contributed under MIT/X11 license.
13487
13488 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13489
13490         * Makefile.am: Use gmcs for compiling the regression tests.
13491
13492         * *.2.cs *.2.il: Rename to *.cs and *.il.
13493
13494 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13495
13496         * regalloc.h: Make the vassign array smaller.
13497
13498         * mini.c (mini_method_compile): Remove an unused field in cfg.
13499
13500         * mini-codegen.c: Add a bunch of micro optimizations.
13501
13502 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13503
13504         * regalloc.h: Remove some unused fields.
13505
13506 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13507
13508         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13509
13510         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13511
13512 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13513
13514         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13515
13516         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13517         trampoline: Fetch an entry from the runtime generic context.  If
13518         it's NULL, jump to the actual trampoline to fill the runtime
13519         generic context.  Otherwise, return it.
13520
13521         * mini.c: Call the lazy fetch trampoline to get entries out of the
13522         runtime generic context.
13523
13524         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13525         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13526         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13527
13528 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13529
13530         * mini.c: Fetch data out of the extensible part of the runtime
13531         generic context instead of calling a helper function.
13532
13533         * generic-sharing.c: Some functions moved into
13534         metadata/generic-sharing.c.  Helper function for fetching other
13535         types now checks and asserts against extensible rgctx (just for
13536         debugging purposes - the helper function isn't called anymore
13537         unless for debugging).
13538
13539 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13540
13541         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13542         for tail calls up to the point that the tests in iltests.exe run. Also add a
13543         dummy CKFINITE implementation.
13544         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13545         needed for trampoline LMF frames.
13546
13547         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13548         trampoline LMF frames.
13549
13550 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13551
13552         * mini.c (inline_method): clean any pending loader error when inlining fail.
13553         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13554
13555 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13556
13557         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13558
13559         * aot-runtime.c (decode_patch_info): Ditto.
13560
13561         * mini.c (mono_resolve_patch_target): Ditto.
13562         
13563         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13564         icall wrappers.
13565
13566         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13567         
13568         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13569         if it references an icall address.
13570
13571 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13572
13573         * cpu-s390x.md: Remove some more unused opcodes.
13574         
13575         * cpu-s390x.md: Remove some unused opcodes.
13576
13577         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13578         mono_op_imm_to_op ().
13579
13580         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13581         instead of a switch statement.
13582         
13583         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13584         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13585
13586         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13587         
13588         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13589
13590         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13591         -1.
13592
13593 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13594
13595         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13596         opened. Fixes #362607.
13597
13598         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13599
13600         * iltests.il.in: Add a test for static methods in interfaces.
13601
13602 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13603
13604         * genmdesc.c (build_table): Fix a crash on older glib versions.
13605
13606         * cpu-sparc.md: Remove some unused opcodes.
13607         
13608         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13609         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13610
13611         * cpu-amd64.md: Remove some unused opcodes.
13612
13613         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13614         like the other opcodes.
13615
13616 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13617
13618         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13619
13620         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13621
13622         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13623         variables 'cfg' instead of 'm' for consistency.
13624
13625         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13626
13627         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13628         argument holding the vtype return address, to avoid the ambigious use of
13629         cfg->ret for this purpose.
13630
13631         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13632
13633         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13634         
13635         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13636         new mono_print_ins () function which only takes one argument.
13637
13638 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13639
13640         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13641         macro arguments.
13642
13643 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13644
13645         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13646
13647         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13648
13649         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13650         opcodes and other small changes.
13651
13652         * mini-ops.h: Add some new opcodes from the linear IR branch.
13653
13654         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13655
13656         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13657         opcodes, use the REG_MEMBASE opcodes instead.
13658         
13659         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13660         opcodes, use the REG_MEMBASE opcodes instead.
13661         
13662         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13663         linear IR branch.
13664
13665         * mini.c (mono_op_imm_to_op): New helper function.
13666
13667         * mini-ops.h: Add some opcodes from linear IR branch.
13668
13669 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13670
13671         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13672         <tsv@solvo.ru>.
13673
13674 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13675
13676         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13677         OP_ICONV_TO_R4/R8.
13678
13679         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13680
13681 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13682
13683         * aot-compiler.c (emit_method_code): Add an assert.
13684
13685         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13686         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13687         methods.
13688
13689 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13690
13691         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13692         some load/store opcodes so they are consistent. 
13693         (mono_arch_emit_prolog): Simplify some code.
13694
13695         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13696
13697         * objects.cs: Add tests for large argument offsets on ARM.
13698
13699         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13700         stack offsets. Fixes #359651.
13701
13702         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13703
13704         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13705
13706         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13707
13708         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13709
13710         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13711
13712         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13713         rid of CEE_CONV_R_UN.
13714
13715         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13716
13717 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13718
13719         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13720
13721         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13722
13723         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13724
13725         * cpu-amd64.md: Remove some unused opcodes.
13726
13727         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13728
13729         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13730
13731         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13732         arch specific functions for its parts. Call the peephole pass after local
13733         regalloc so the prolog can compute a more accurate max_offset.
13734         
13735         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13736         the corresponding OP_I/OP_L opcodes.
13737
13738         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13739
13740         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13741
13742 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13743
13744         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13745         as they are handled in mini.c.
13746
13747         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13748         
13749         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13750         case since it is handled in mini.c.
13751
13752         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13753
13754         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13755
13756         * *.c: Use the new opcodes in the IR and back end code.
13757
13758         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13759
13760         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13761
13762 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13763
13764         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13765         an assert because it has a race condition.
13766
13767 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13768
13769         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13770
13771         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13772
13773         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13774
13775         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13776         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13777
13778 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13779
13780         * cpu-amd64.md (move): Correct the maximum size of move.
13781
13782 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13783
13784         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13785         the generic class init trampoline to return quickly if the class
13786         is already inited.
13787
13788 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13789
13790         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13791         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13792
13793 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13794
13795         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13796         branch.
13797
13798 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13799
13800         * objects.cs: Add some soft-float tests.
13801
13802         * mini.c: Fix a couple more soft-float issues.
13803
13804         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13805
13806         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13807         avoid a REX prefix.
13808
13809 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13810
13811         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13812         exception happens while compiling a virtual method.
13813
13814 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13815
13816         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13817         
13818         * mini-sparc.c: Fix build.
13819
13820         * mini-sparc.c (get_call_info): Add support for generic sharing.
13821
13822         * mini-exceptions.c: Add a FIXME.
13823
13824 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13825
13826         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13827         altstack handling code.
13828
13829         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13830         
13831         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13832
13833         * mini-s390.c: Add support for generic sharing.
13834
13835         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13836         Fix CAS on s390.
13837         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13838
13839         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13840
13841         * mini-s390x.c: Add support for generic sharing.
13842         
13843         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13844         Fix CAS on ia64.
13845         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13846
13847         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13848         can be used since it takes a 16 bit signed immediate.
13849
13850         * inssel-s390x.brg: Fix OP_SETRET.
13851
13852         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13853
13854         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13855
13856         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13857
13858         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13859
13860         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13861         in one place.
13862
13863         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13864         stuff.
13865
13866         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13867         of the unused mono_arch_patch_delegate_trampoline stuff.
13868
13869 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13870
13871         * basic-long.cs: Move the fp related tests to basic-float.cs.
13872
13873         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13874
13875         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13876
13877         * basic-calls.cs: Add a test for proper float argument passing.
13878
13879         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13880         if the context corresponds to an exception received through a signal.
13881
13882         * exceptions.cs: Add a test for nullref handling at the start of a try
13883         clause.
13884
13885         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13886
13887         * jit-icalls.c (mono_break): New JIT icall.
13888
13889         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13890
13891         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13892
13893 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13894
13895         * cpu-*.md: Get rid of unused opcodes.
13896
13897         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13898
13899         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13900         by all platforms.
13901
13902         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13903         define.
13904
13905         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13906         the arch independent trampoline code in mini-trampolines.c.
13907
13908         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13909
13910         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13911
13912         * mini-s390.h: Remove an unused define.
13913         
13914         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13915         the arch independent trampoline code in mini-trampolines.c.
13916
13917         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13918
13919 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13920
13921         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13922
13923         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13924
13925         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13926
13927         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13928
13929         * cpu-amd64.md: Use smaller sizes for int opcodes.
13930
13931         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13932
13933         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13934         objects.cs.
13935
13936         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13937         debugging.
13938
13939         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13940         instead of though a pointer to save an indirection when accessing elements of
13941         the array.
13942
13943         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13944         some typos.
13945         (NOT_IMPLEMENTED): New helper macro.
13946         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13947         of a bb.
13948
13949         * *.c: Use the new helper macro.
13950
13951 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13952
13953         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13954
13955 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13956
13957         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13958         stack slots.
13959
13960 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13961
13962         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13963         profiling is enabled.
13964         
13965         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13966         the end.
13967         (mono_arch_emit_prolog): Add more first bblock optimizations.
13968
13969         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13970         in order if possible.
13971         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13972         bblock, since the arguments are still in their original registers.
13973
13974         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13975
13976 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13977
13978         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13979         as well.
13980
13981         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13982         offset 0.
13983
13984         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13985
13986         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13987         process async exceptions received while in unmanaged code.
13988
13989         * mini.c (mini_init): Install a callback with the runtime which will be called
13990         when a thread receives an async exception while in unmanaged code.
13991
13992         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13993
13994         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13995
13996 2008-01-16  Wade Berrier  <wberrier@novell.com>
13997
13998         * cpu-g4.md:
13999         * cpu-arm.md:
14000         * cpu-s390x.md:
14001         fix build
14002
14003 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
14004
14005         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
14006         compilation with sun cc.
14007
14008         * cpu-*.md: Fix the build.
14009
14010         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
14011
14012         * mini-amd64.h: Add some comments to the MonoLMF structure.
14013
14014         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
14015         
14016         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
14017         in the LMF structure if possible. This saves two instructions in the
14018         managed->native wrappers.
14019
14020         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
14021
14022 2008-01-16  Mark Probst  <mark.probst@gmail.com>
14023
14024         * generic-sharing.c: New type argument lookup code which uses the
14025         runtime generic context template.
14026
14027 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
14028
14029         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
14030
14031         * mini-arm.c (add_general): Fix arm eabi parameter passing.
14032         (mono_arch_output_basic_block): Fix localloc implementation.
14033
14034         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
14035
14036         * mini-ia64.c (peephole_pass): Fix ia64 build.
14037
14038         * mini-amd64.c (peephole_pass): Fix a warning.
14039         
14040         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
14041         at a constant offset from sp/fp.
14042
14043         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
14044         instead of obtaining it from *lmf in the managed method case.
14045
14046 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
14047
14048         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
14049
14050 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
14051
14052         * mini.h (MonoInstList): New type.
14053         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
14054         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
14055         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
14056         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
14057         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
14058         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
14059         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
14060         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
14061         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
14062         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
14063         MONO_INST_LIST_FOR_EACH_ENTRY,
14064         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
14065         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
14066         mono_inst_list_first, mono_inst_list_last,
14067         mono_inst_list_next, mono_inst_list_prev): New instruction
14068         list handling interfaces.
14069         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
14070         list head 'ins_list'.
14071         (MonoInst): Replace next pointer with list head 'node'.
14072         (MonoCallInst): Make 'out_args' a MonoInstList.
14073         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
14074         (MonoCompile): Delete reverse_inst_list and
14075         reverse_inst_list_len.
14076         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
14077         mono_arch_lowering_pass, mono_arch_local_regalloc,
14078         mono_arch_output_basic_block, mono_arch_emit_prolog):
14079         Convert to new instruction lists.
14080         (insert_after_ins): Delete.
14081         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
14082         instruction lists.
14083         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
14084         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
14085         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
14086         mono_emulate_opcode, mono_emit_load_got_addr,
14087         inline_method, mono_method_to_ir, mono_print_bb_code,
14088         print_dfn, decompose_pass, nullify_basic_block,
14089         replace_out_block_in_code, remove_block_if_useless,
14090         merge_basic_blocks, move_basic_block_to_end,
14091         try_unsigned_compare, optimize_branches, mono_print_code,
14092         mini_select_instructions, remove_critical_edges): Likewise.
14093         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
14094         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
14095         mono_arch_output_basic_block, mono_arch_emit_prolog):
14096         Likewise.
14097         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
14098         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14099         mono_arch_output_basic_block): Likewise.
14100         (inst_list_prepend, insert_after_ins): Delete.
14101         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
14102         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
14103         instruction lists.
14104         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
14105         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
14106         mono_arch_emit_prolog): Likewise.
14107         * cfold.c (mono_constant_fold): Likewise.
14108         * liveness.c (visit_bb, mono_analyze_liveness,
14109         optimize_initlocals): Likewise.
14110         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
14111         * graph.c (mono_draw_code_cfg): Likewise.
14112         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
14113         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
14114         mono_ssa_cprop): Likewise.
14115         * abcremoval (get_relations_from_previous_bb, process_block):
14116         Likewise.
14117         * local-propagation (mono_cprop_invalidate_values,
14118         mono_local_cprop_bb): Likewise.
14119         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
14120         peephole_pass, mono_arch_output_basic_block,
14121         mono_arch_emit_prolog): Likewise.
14122         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
14123         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14124         mono_arch_emit_prolog): Likewise.
14125         (insert_after_ins): Delete.
14126         * aliasing.c (print_code_with_aliasing_information,
14127         mono_build_aliasing_information, mono_aliasing_deadce):
14128         Convert to new instruction lists.
14129         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
14130         peephole_pass, NEW_INS, mono_arch_lowering_pass,
14131         mono_arch_local_regalloc, mono_arch_output_basic_block):
14132         Likewise.
14133         (insert_after_ins): Delete.
14134         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
14135         peephole_pass, mono_arch_output_basic_block): Convert to
14136         new instruction lists.
14137         * mini-codegen (InstList, inst_list_prepend,
14138         insert_after_ins): Delete.
14139         (insert_before_ins, get_register_force_spilling,
14140         get_register_spilling, free_up_ireg, free_up_reg,
14141         create_copy_ins, create_spilled_store, alloc_int_reg,
14142         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
14143         to new instruction lists.
14144         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
14145         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14146         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
14147         (insert_after_ins): Delete.
14148         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
14149         mono_arch_local_regalloc, mono_arch_output_basic_block,
14150         mono_arch_call_opcode): Convert to new instruction lists.
14151         (insert_after_ins): Delete.
14152         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
14153         peephole_pass, mono_arch_output_basic_block,
14154         mono_arch_emit_prolog): Convert to new instruction lists.
14155
14156 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
14157
14158         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
14159
14160         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
14161         Fixes #353182.
14162
14163         * Makefile.am (version.h): Make this work with non-bash shells.
14164
14165 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
14166
14167         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
14168
14169 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14170
14171         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
14172         the InitializeArray optimization.
14173
14174 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14175
14176         * mini.c driver.c: Don't include os/gc_wrapper.h.
14177
14178 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14179
14180         * mini.c (print_jit_stats): Print GC statistics if available.
14181
14182 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14183
14184         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14185
14186 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14187
14188         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14189
14190 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14191
14192         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14193         
14194         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14195
14196         * driver.c (mono_main): Ditto.
14197
14198 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14199
14200         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14201
14202         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14203         in the vtable can't be encoded.
14204         (compile_method): Ditto.
14205
14206 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14207
14208         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14209         defined.
14210
14211         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14212         lmf->rbp.
14213
14214         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14215         the top LMF entry belongs to the current method.
14216
14217         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14218
14219 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14220
14221         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14222         
14223         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14224
14225         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14226
14227         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14228
14229         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14230
14231         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14232         implementation.
14233
14234         * basic-float.cs: Add an ulong->double cast test.
14235
14236 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14237
14238         * mini.c (mono_method_to_ir): Fix a warning.
14239
14240 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14241
14242         * mini-ops.h: Add OP_SWITCH.
14243
14244         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14245         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14246
14247 2007-12-11  Geoff Norton  <gnorton@novell.com>
14248
14249         * mini-s390x.c: Minor change to the MAX() define to allow
14250         it to compile with other gcc versions.
14251
14252 2007-12-11  Geoff Norton  <gnorton@novell.com>
14253
14254         * cpu-s390x.md:
14255         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14256
14257 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14258
14259         exceptions-arm.c (mono_arch_get_restore_context): Restore
14260         the frame pointer.
14261
14262         exceptions-arm.c (throw_exception): Save the frame pointer.
14263         This is a partial fix for #323747. Only the client side is
14264         fixed.
14265
14266 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14267
14268         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14269         was using an unrelated variable to log the class which
14270         needed the cctor to be called. This was crashing on arm.
14271
14272 2007-12-09  Robert Jordan  <robertj@gmx.net>
14273
14274         * mini-x86.c (mono_arch_emit_epilog):
14275         Consider all kinds of 64-bit types. Fixes #323114.
14276
14277 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14278
14279         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14280
14281 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14282
14283         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14284
14285 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14286
14287         * mini.c: run type ctor before allocating an object, not only
14288         when running it's constructor method (fixes at least part of bug #342507).
14289
14290 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14291         
14292         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14293         
14294         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14295         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14296         function.
14297
14298         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14299         mono_generic_class_init_trampoline () the same as it is done with the other
14300         trampolines.
14301
14302         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14303         aot-runtime.c aot-compiler.c: Implement AOT support.    
14304
14305 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14306
14307         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14308         build for archs which don't have the vtable trampoline defined
14309         yet.
14310
14311 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14312
14313         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14314
14315         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14316
14317         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14318
14319         * tramp-<ARCH>.c: Use the new helper function.
14320
14321 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14322
14323         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14324         trampoline call, which takes a vtable argument.
14325
14326         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14327         OP_TRAMPCALL_VTABLEs like other calls.
14328
14329         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14330         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14331         call.  Implemented a support function which fetches the vtable
14332         from a register set.
14333
14334         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14335         Implemented a generic class init trampoline, using the
14336         OP_TRAMPCALL_VTABLE opcode.
14337
14338         * mini.c: Implemented static field access when sharing generic
14339         code.  This implies initing the class using the new
14340         OP_TRAMPCALL_VTABLE call.
14341
14342 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14343
14344         * mini.c: Don't compile methods with sharing enabled if their
14345         classes are disabled for sharing.
14346
14347 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14348
14349         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14350         opcodes. Fixes #346563.
14351
14352         * objects.cs: Add a new test.
14353
14354         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14355
14356         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14357         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14358
14359 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14360
14361         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14362
14363 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14364
14365         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14366         code stream.
14367
14368 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14369
14370         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14371
14372         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14373         optimization in the AOT case.
14374         
14375 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14376
14377         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14378         
14379         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14380
14381         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14382
14383         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14384
14385         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14386         is created by the inlined delegate ctor.
14387
14388         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14389
14390         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14391
14392 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14393
14394         * cpu-x86.md: Fix the length of ckfinite.
14395
14396 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14397
14398         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14399         
14400         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14401         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14402
14403         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14404
14405         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14406         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14407
14408 2007-11-28  Martin Baulig  <martin@ximian.com>
14409
14410         * mini-x86.c
14411         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14412         after creating the trampoline.
14413
14414 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14415
14416         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14417
14418         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14419         the same version.
14420
14421         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14422         instead of the calling method to help AOT.
14423
14424         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14425
14426 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14427
14428         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14429         is defined.
14430
14431 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14432
14433         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14434         
14435         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14436         (encode_method_ref): No need to handle generic method definitions specially.
14437
14438         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14439
14440         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14441         decode_klass_info.
14442
14443         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14444         encode_klass_info.
14445         (compile_method): Enable generic sharing.
14446
14447 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14448
14449         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14450         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14451
14452         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14453         generic code.
14454
14455         * mini-trampolines.c: Fix a warning.
14456
14457         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14458         NEW_PCONST.
14459         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14460         (generic_class_is_reference_type): Remove unused function.
14461
14462         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14463         in the generic vtable trampoline case.
14464
14465         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14466         
14467         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14468         return an AOT method based on a vtable slot.
14469
14470         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14471
14472         * mini.c (mini_get_vtable_trampoline): Export this.
14473
14474 2007-11-22  Martin Baulig  <martin@ximian.com>
14475
14476         * debug-debugger.h
14477         (MonoDebuggerInfo): Move `debugger_version' up.
14478
14479 2007-11-22  Martin Baulig  <martin@ximian.com>
14480
14481         * mini-amd64.c
14482         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14483
14484         * mini-trampolines.c
14485         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14486         after compiling the method.
14487
14488 2007-11-20  Martin Baulig  <martin@ximian.com>
14489
14490         * debug-mini.c
14491         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14492         (mono_debugger_remove_breakpoint): Likewise.
14493         (mono_debugger_check_breakpoints): Likewise.
14494
14495         * debug-debugger.c: Implement the new breakpoint interface here.
14496
14497 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14498
14499         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14500         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14501
14502         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14503
14504 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14505
14506         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14507
14508         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14509         mini.c.
14510
14511         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14512         mini.c.
14513
14514         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14515         returning a vtype in a register.
14516
14517         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14518         here from the arch specific code.
14519
14520         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14521         mini.c.
14522
14523         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14524         (mono_arch_emit_prolog): Increment maximum prolog size.
14525
14526         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14527         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14528
14529         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14530         MonoGenericSharingContext.
14531
14532         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14533         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14534
14535 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14536
14537         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14538         which extract fields out of the runtime generic context.  Full
14539         sharing of the NEWARR opcode.
14540
14541 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14542
14543         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14544         --enable-minimal=ssa.
14545
14546 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14547
14548         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14549         mono_marshal_get_delegate_invoke () signature change.
14550
14551 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14552
14553         * mini.c: Removed the shared context in favor of the generic
14554         sharing context.  Allocate the MonoJitInfo structure with room for
14555         the generic sharing context if it's needed.
14556
14557         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14558         domain-internals.h now.
14559
14560         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14561
14562         * generic-sharing.c: Several changes for working without a shared
14563         context and instead operating on open types instead.
14564
14565 2007-11-12  David S. Miller  <davem@davemloft.net>
14566
14567        * inssel-sparc.brg: Fix double instruction emit.
14568
14569 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14570
14571         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14572         Get/Set/Address methods.
14573         
14574         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14575         mono_marshal_get_delegate_invoke signature change.
14576
14577 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14578
14579         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14580         This can happens with dynamic methods. Fixes the other bug in #322722.
14581
14582 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14583
14584         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14585         BX call sequence.
14586
14587         * mini-arm.c (arm_patch): Implement patching of BX call
14588         sequence. Fixes one of the bugs in #322722.
14589
14590 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14591
14592        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14593        under Linux.  We only need to flush every 32-byte cache line.    
14594
14595 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14596
14597         * mini.c:
14598         move_basic_block_to_end: Add branches when needed, eventually creating
14599         a new BB.
14600         optimize_branches: added a parameter that tells if it's ok to create
14601         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14602         and avoid calling move_basic_block_to_end when it's not ok.
14603         Fixes bug 318677.
14604
14605 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14606
14607         * mini.c: Abort inlining call to InitializeArray if something
14608         looks wrong.  Let the icall handle it, which now has proper safety
14609         checks.
14610
14611 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14612
14613         * mini.c (mono_spill_call): add support for soft-float.
14614
14615         * mini.c (mono_method_to_ir): add support for soft-float
14616         to inlined functions that return float.
14617
14618         * mini.c (mono_method_to_ir): add support for soft-float
14619         to cee_stsfld opcode on float fields.
14620
14621 2007-11-05  Geoff Norton  <gnorton@novell.com>
14622
14623         * mini-x86.h: Fix the structure access for X86 Leopard.
14624
14625
14626 2007-11-05  Martin Baulig  <martin@ximian.com>
14627
14628         * mini-trampolines.c
14629         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14630         after compiling the method to notify the debugger.
14631
14632 2007-11-05  Martin Baulig  <martin@ximian.com>
14633
14634         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14635
14636 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14637
14638         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14639         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14640
14641 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14642
14643         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14644         native-to-managed wrappers.
14645         
14646 2007-11-01  Geoff Norton  <gnorton@novell.com>
14647
14648         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14649         members.
14650
14651 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14652
14653         * mini.c, mini-x86.c: when getting back from unmanaged code
14654         to managed via a marshaled delegate we also need to set the
14655         right domain.
14656
14657 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14658
14659         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14660         for amd64.
14661
14662 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14663
14664         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14665         let the debugger or other external agents to tell the JIT when
14666         a sw breakpoint has been inserted in the code that the JIT needs
14667         to be able to inspect.
14668
14669 2007-10-31  Martin Baulig  <martin@ximian.com>
14670
14671         * debug-debugger.h
14672         (MonoDebuggerInfo): Remove `runtime_class_init'.
14673
14674 2007-10-30  Martin Baulig  <martin@ximian.com>
14675
14676         * debug-mini.h
14677         (mono_debugger_thread_created): Added `MonoThread *' argument.
14678         (mono_debugger_extended_notification): New public method.
14679         (mono_debugger_trampoline_compiled): New public method.
14680
14681         * debug-mini.c
14682         (MonoDebuggerThreadInfo): Added `thread' and
14683         `extended_notifications' fields.
14684
14685         * debug-debugger.c
14686         (debugger_executable_code_buffer): New static variable.
14687
14688         * debug-debugger.h
14689         (MonoDebuggerInfo): Added `executable_code_buffer',
14690         `executable_code_buffer_size', `breakpoint_info_area',
14691         `breakpoint_table' and `breakpoint_table_size'.
14692
14693 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14694
14695         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14696         that IP  either is an unused value or the vtable pointer. IMT 
14697         calls use vtable + offset now. Reduced by almost half the size
14698         of IMT entries.
14699
14700 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14701
14702         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14703         defines to access param registers. Replace long usage with
14704         gsize as sizeof(long) != sizeof(void*) on Win64.
14705
14706         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14707         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14708         instead of non-existant _GetAddressOfReturnAddress.
14709
14710         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14711         param registers. Save/restore %rdi and %rsi in MonoLMF.
14712
14713         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14714         param registers. Modify (throw_exception) signature to take 
14715         %rdi and %rsi on Win64. 
14716
14717         Code is contributed under MIT/X11 license.
14718
14719 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14720
14721         * helpers.c: unlink debugging output files.
14722
14723 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14724
14725         * mini.c: Move mono_create_ftnptr () to object.c.
14726
14727 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14728
14729         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14730         optional. This function can now be used to disassemble code generated
14731         outside the JIT such as trampolines and IMT thunks.
14732
14733         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14734
14735         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14736         vtable pointer from a ldr instruction.
14737
14738         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14739         new IMT call sequence.
14740
14741         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14742         call sequence for interface invocations.
14743
14744         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14745         for imt support. This function is empty since IMT on ARM requires no
14746         special handling on the IR side.
14747
14748         * mini-arm.c (mono_arch_find_imt_method): added, required for
14749         imt support.
14750
14751         * mini-arm.c (mono_arch_find_this_argument): added, required
14752         for imt support.
14753
14754         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14755         a ldr instruction to load a value stored in the code stream.
14756
14757         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14758         for imt support.
14759
14760
14761 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14762
14763         * mini.c (mini_init): Install the jump trampoline callback.
14764
14765 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14766
14767         * mini-trampolines.c: handle synchronized methods with the common
14768         vtable trampoline (bug #335601).
14769
14770 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14771
14772         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14773
14774         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14775         64 bit platforms.
14776
14777         * mini-ia64.h mini-ia64.c: Add support for IMT.
14778
14779         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14780         prolog. Fixes #331958.
14781
14782 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14783
14784         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14785
14786 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14787
14788         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14789         trampoline.
14790
14791 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14792
14793         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14794         trampoline.
14795
14796 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14797
14798         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14799         trampoline.
14800
14801 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14802
14803         * mini-trampolines.c: changed the magic rampoline to understand
14804         the common vtable trampoline method: the method to invoke is
14805         determined by the vtable displacement of the call.
14806
14807 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14808
14809         * mini.c, mini.h: register the common vtable trampoline if the
14810         architecture supports it.
14811
14812 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14813
14814         * cpu-amd64.md: use the correct max length for tls_get.
14815
14816 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14817
14818         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14819         CEE_STELEM_ANY. Fixes #333696.
14820
14821 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14822
14823         * exceptions-x86.c: provide more graceful handling of the case where
14824         we followed a bogus function pointer from managed code (bug #332866).
14825
14826 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14827
14828         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14829         replaces the generic_shared flag and will carry more information
14830         in the future.
14831
14832         * generic-sharing.c: Added mini_type_stack_size() which allows
14833         allows open types if given a generic sharing context.
14834         mini_get_basic_type_from_generic() takes a
14835         MonoGenericSharingContext* instead of a MonoCompile* now.
14836
14837         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14838         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14839         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14840         changes above.  Just passing arguments through to the right
14841         places.
14842
14843 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14844
14845         * mini-arm.c: unify the call emission to emit_code_seq().
14846
14847 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14848
14849         * tramp-arm.c: reduced the trampoline size.
14850
14851 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14852
14853         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14854         variable handling out of arch-specific code.
14855
14856 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14857
14858         * mini-arm.c: implemented fast delegate dispatch.
14859
14860 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14861
14862         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14863         that fp elimination is turned off if the space required by locals is too
14864         big. Fixes #331958.
14865
14866 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14867
14868         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14869         ARM to the new style trampoline.
14870
14871 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14872
14873         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14874
14875         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14876
14877 2007-10-09  Martin Baulig  <martin@ximian.com>
14878
14879         * debug-debugger.h
14880         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14881         `field_info_offset_offset'.     
14882
14883 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14884
14885         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14886         removed more internal usage of the r11 register and made it available
14887         to the register allocator.
14888
14889 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14890
14891         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14892         when sharing generics and treat type variables as references.
14893
14894 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14895
14896         * mini-ppc.c: started removing the internal uses of register r11
14897         to eventually allow the register allocator to manage it as an
14898         additional available register.
14899
14900 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14901
14902         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14903
14904 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14905
14906         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14907         specific trampolines as they are not performance critical as a jump
14908         target (maybe align as before only for AOT code?). This saves about
14909         200 KB of native code on x86 for monodevelop startup.
14910
14911 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14912
14913         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14914         monodevelop startup.
14915
14916 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14917
14918         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14919
14920         * mini-sparc.h mini-sparc.c: Implement IMT support.
14921
14922         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14923         its smaller and doesn't clobber sparc_g1.
14924
14925         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14926
14927 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14928
14929         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14930
14931 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14932
14933         * mini-ppc.c: implemented fast delegate invocation.
14934
14935 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14936
14937         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14938
14939 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14940
14941         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14942         code to the new style trampoline in preparation for IMT support.
14943
14944 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14945
14946         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14947         systems already. This also reduces the specific trampiline sizes and
14948         prepares for the use of r12 as the IMT identifier register.
14949
14950 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14951
14952         * mini-mips.h: endianess fix (simplified from a patch by
14953         Thomas Kunze <thommy@tabao.de>, bug #323737).
14954
14955 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14956
14957         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14958         to access ucontext fields and enable netbsd support
14959         (partially from Magnus Henoch <mange@freemail.hu>).
14960
14961 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14962
14963         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14964         use the preprocessor from the CPP env var if it is set.
14965
14966 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14967
14968         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14969         code, before interface_offset gets used.
14970
14971 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14972
14973         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14974         mono_class_setup_vtable () before accessing klass->vtable.
14975
14976 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14977
14978         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14979         hackish.
14980
14981 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14982
14983         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14984         IMT slots (this saves hundreds of KB of memory in programs like
14985         IronPython and Monodevelop).
14986
14987 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14988
14989         * mini.c: print the delegate counter.
14990
14991 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14992
14993         * mini-x86.c: make it easier to enable the debugging code for IMT
14994         slots.
14995
14996 2007-09-28  Martin Baulig  <martin@ximian.com>
14997
14998         * debug-debugger.h
14999         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
15000         `mono_method_klass_offset' and `mono_method_token_offset'.
15001
15002 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15003
15004         * mini.c: First generics sharing implementation.  Can only share
15005         in very simple cases.  If sharing doesn't work it falls back to
15006         dedicated compilation.
15007
15008         * mini.h: Flag in MonoCompile to specify whether generic
15009         compilation is shared.  Flags enum for marking which generic inst
15010         of a context is used.  Prototypes for helper functions.
15011
15012         * generic-sharing.c: Helper functions for generic method sharing.
15013
15014         * optflags-def.h: Optimization flag (gshared) for enabling generic
15015         method sharing added.
15016
15017         * Makefile.am: generic-sharing.c added.
15018
15019 2007-09-19 Daniel Nauck <dna@mono-project.de>
15020
15021         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
15022
15023 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
15024         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
15025         fixes bug 325507.
15026
15027 2007-09-19  Martin Baulig  <martin@ximian.com>
15028
15029         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
15030         mono_debug_cleanup() is now part of mono_cleanup().
15031
15032 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15033
15034         * driver.c (mono_main): Fix a warning.
15035
15036 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15037
15038         * aot-compiler.c: Optimize various parts when processing large assemblies.
15039         Fixes ##325568.
15040
15041         * mini.c (mono_patch_info_hash): Improve hash function.
15042
15043 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15044
15045         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
15046         
15047         Code is contributed under MIT/X11 license.
15048
15049 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15050
15051         * mini.c (mini_init): Fix a leak.
15052
15053         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
15054
15055 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15056
15057         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
15058
15059 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15060
15061         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
15062
15063 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15064
15065         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
15066         variance tests.
15067
15068         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
15069
15070         * mini.c (handle_alloc): Enable managed allocators in AOT code.
15071
15072         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
15073
15074         * aot-runtime.c (decode_patch_info): Ditto.
15075
15076 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15077
15078         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
15079         static case. Cache delegates in architecture specific code, 
15080         based on number of parameters.
15081         
15082         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
15083         in architecture specific code, based on number of parameters.
15084         
15085         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
15086         caching happen in architecture specific code now.
15087         
15088         Code is contributed under MIT/X11 license.
15089
15090 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15091
15092         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
15093         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
15094         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
15095
15096         Code is contributed under MIT/X11 license.
15097
15098 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15099         * mini.c: (mono_thread_abort) Fixed bug #82416.
15100
15101 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15102
15103         * mini.: hook the new managed GC allocation feature into the JIT.
15104
15105 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15106
15107         * mini.c: implementation for the new runtime tls opcode.
15108
15109 2007-09-11  Martin Baulig  <martin@ximian.com>
15110
15111         * debug-debugger.h
15112         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
15113         `mono_method_inflated_offset'.
15114
15115 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
15116
15117         * driver.c mini.h mini.c: Add a new devel command line option for injecting
15118         async exceptions into a method.
15119
15120         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
15121         purpose of testing whenever the unwinder works at every instruction.
15122
15123 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
15124
15125         * mini.c: check accessibility of method used in ldftn (fixes
15126         bug #82635).
15127
15128 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
15129
15130         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
15131
15132         * inssel.brg: Fix a warning.
15133
15134 2007-09-03  Martin Baulig  <martin@ximian.com>
15135
15136         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
15137         now takes the `main_method' as argument.
15138
15139 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
15140
15141         * cpu-sparc.md (endfilter): Add missing src1:i argument.
15142
15143 2007-08-30  Jonathan Chambers <joncham@gmail.com>
15144
15145         * driver.c: include the cil-coff.h header on Windows.
15146         
15147         Code is contributed under MIT/X11 license.
15148
15149 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15150
15151         * mini.c, driver.c: don't include the cil-coff.h header.
15152
15153 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15154
15155         * mini.c: flag places that needs fixes fo soft-float support.
15156
15157 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
15158
15159         * mini.h, inssel-float.brg: fix soft-float constant loads on big
15160         endian systems (partially from Dean Jenkins, bug #81924).
15161
15162 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15163
15164         * mini.c (check_linkdemand): Remove embedded reference object in
15165         call to LinkDemandSecurityException.
15166         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
15167         with an IntPtr instead of a reference object.
15168
15169 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15170
15171         * mini.c (handle_initobj): Handle alignment properly.
15172
15173         * inssel.brg (mini_emit_memset): Ditto. 
15174
15175         * inssel.brg (mini_emit_memcpy): Ditto. 
15176
15177         * inssel-sparc.brg: Ditto.              
15178
15179         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
15180
15181 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
15182
15183         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15184         exceptions raised in unmanaged code. Fixes part of #82594.
15185
15186 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15187
15188         * mini.c (mono_method_to_ir), declsec.c
15189         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15190
15191 2007-08-22  Martin Baulig  <martin@ximian.com>
15192
15193         * debug-mini.h
15194         (MonoDebuggerThreadInfo): New typedef.
15195         (mono_debugger_thread_table): New global variable.
15196         (mono_debugger_thread_created): New public function.
15197         (mono_debugger_thread_cleanup): New public function.
15198
15199         * debug-debugger.h
15200         (MonoDebuggerInfo):
15201         - removed `get_current_thread' and `lookup_assembly'.
15202         - removed `data_table'.
15203         - added `thread_table'.
15204
15205         * mini.c
15206         (mono_thread_start_cb): Call mono_debugger_thread_created().
15207         (mono_thread_attach_cb): Likewise.
15208         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15209         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15210         initial domain.
15211
15212         * driver.c (mono_main): Move mono_debug_init() up, before calling
15213         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15214
15215 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15216
15217         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15218         together when passing several arguments of type double (gives a small
15219         speedup and saves a few bytes of generated code).
15220
15221 2007-08-20  Jb Evain  <jbevain@novell.com>
15222
15223         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15224
15225 2007-08-20  Jb Evain  <jbevain@novell.com>
15226
15227         * mini.c (mono_method_to_ir): throw MethodAccessException
15228         and FieldAccessException instead of InvalidProgramException.
15229
15230 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15231
15232         * mini.c: CoreCLR security checks.
15233
15234         * mini.h: Removed MonoSecurityMode (moved to
15235         metadata/security-manager.h) and mono_security_mode global var
15236         (replaced by set/get functions in security-manager.h).
15237
15238         * driver.c: Added "core-clr-test" security mode for testing.  Used
15239         set-function for setting security mode.
15240
15241 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15242
15243         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15244         the new jit_info_table.
15245
15246         * driver.c: Test code for the new jit_info_table (enabled by the
15247         define MONO_JIT_INFO_TABLE_TEST).
15248
15249 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15250
15251         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15252         detection of call <REG> instruction sequence. Fixes build on freebsd.
15253
15254 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15255
15256         * mini-exceptions.c: Fix a warning.
15257
15258 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15259
15260         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15261         stack overflow handling code on amd64 too.
15262
15263         * mini-exceptions.c (mono_setup_altstack): Make this use 
15264         mono_thread_get_stack_bounds ().
15265
15266         * mini-x86.h: Disable sigaltstack on solaris x86.
15267
15268 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15269
15270         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15271
15272 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15273
15274         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15275
15276 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15277
15278         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15279
15280         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15281
15282 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15283
15284         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15285         due to alignment.
15286
15287 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15288
15289         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15290         to be emitted (bug #82281).
15291
15292 2007-08-01  Martin Baulig  <martin@ximian.com>
15293
15294         Merged the `debugger-dublin' branch.
15295
15296         * debug-debugger.h (MonoDebuggerInfo):
15297         Removed the `old_*' compatibility entries.
15298         Added `debugger_version' and `data_table'.
15299         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15300         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15301
15302         * debug-mini.c
15303         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15304         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15305         instead of a `gconstpointer'.
15306         (mono_debugger_insert_method_breakpoint): Return a
15307         `MonoDebugMethodAddressList *'.
15308
15309 2007-06-28  Martin Baulig  <martin@ximian.com>
15310
15311         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15312
15313 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15314
15315         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15316         __builtin_frame_address () since it is broken on older gcc versions.
15317
15318 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15319
15320         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15321         on the stack overflow handling and made the managed stack overflows
15322         catchable in most cases using soft guard pages.
15323         * exceptions-x86.c: added code to restore the protection in the soft
15324         guard pages at the end of exception handling.
15325
15326 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15327
15328         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15329
15330 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15331
15332         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15333         exception handling.
15334
15335 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15336
15337         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15338         signal handling support until it has been ported to the new mechanism.
15339         * mini.c: fixed stack overflow detection and use the new
15340         architecture code  to handle signals on the altstack.
15341
15342 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15343
15344         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15345         stack overflows on the alt stack.
15346
15347 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15348
15349         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15350         stack overflows on the alt stack.
15351
15352 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15353
15354         * exceptions-ppc.c: cleanup preparing for altstack support.
15355
15356 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15357
15358         * exceptions-arm.c: cleanup preparing for altstack support.
15359
15360 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15361
15362         * mini.c (print_jit_stats): Output hazard pointer stats.
15363
15364 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15365
15366         * driver.c, mini.c: Replaced security mode flags with a single
15367         enum variable.
15368
15369 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15370
15371         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15372
15373 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15374
15375         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15376         (which doesn't do anything yet) for activating Core CLR
15377         (Silverlight) security.
15378
15379 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15380
15381         * mini-codegen.c: work around a possible gcc bug on arm.
15382
15383 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15384
15385         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15386         message for platforms that don't support AOT compilation.
15387
15388 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15389
15390         * mini.h, mini.c, driver.c: temporary smcs hack.
15391
15392 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15393
15394         * mini-arm.h, mini-arm.c: arm EABI fixes.
15395
15396 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15397
15398         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15399         case.
15400
15401         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15402         trampolines taking a method argument.
15403
15404         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15405
15406         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15407         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15408
15409         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15410         JIT compilation throws an exception. Fixes #82050.
15411
15412 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15413
15414         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15415         with the MONO_EXCEPTION_ defines.
15416
15417 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15418
15419         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15420         #82117.
15421         
15422         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15423         the cause of an assertion.
15424
15425 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15426
15427         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15428         removed.
15429
15430 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15431
15432         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15433         assert. Should fix #82103.
15434
15435 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15436
15437         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15438         here too. Fixes #82095.
15439
15440         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15441         addresses.
15442
15443         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15444
15445         * mini-amd64.h: Enable IMT for amd64.
15446         
15447         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15448
15449 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15450
15451         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15452
15453 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15454
15455         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15456         as soon as check_linkdemand sets an exception_type.
15457
15458 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15459
15460         * mini-x86.c: fixed offsets for IMT call sequence.
15461         * mini-x86.h: enable IMT again.
15462
15463 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15464
15465         * trace.c (mono_trace_enter_method): Decode MonoType too.
15466
15467         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15468
15469         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15470
15471         * mini-amd64.c: Add preliminary IMT implementation.
15472         
15473 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15474
15475         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15476         understand the new IMT-base interface invocation (thanks to
15477         Daniel Nauck for the report and the remote debugging session).
15478
15479 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15480
15481         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15482
15483 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15484
15485         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15486
15487 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15488
15489         * mini-trampolines.c: implement AOT IMT support.
15490         * mini-x86.h: enable IMT support for wider testing.
15491
15492 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15493
15494         * inssel.brg (emit_imt_argument): Add aot support here.
15495
15496         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15497
15498 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15499
15500         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15501         of the IMT implementation, partially from massi, with my
15502         implementation of the bsearch sequence. Disabled by default until
15503         the AOT code is implemented.
15504
15505 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15506
15507         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15508
15509         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15510
15511 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15512
15513         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15514         arch-independent IMT JIT code from Massimiliano
15515         Mantione (massi@ximian.com) with small cleanups from me.
15516
15517 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15518
15519         * Makefile.am: fix svn invocation to get the svn revision to be
15520         independent of the local language (build fix).
15521
15522 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15523
15524         * mini.c (inline_method): Reset cfg->exception_type if the
15525         inlining is aborted.  Fixes: 82049.
15526
15527 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15528
15529         * mini.c: remove assert from exception handling code when exception_ptr
15530         is not set.
15531
15532 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15533
15534         * mini.c (mono_codegen): Add an assert.
15535
15536         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15537         enter and leave code.
15538         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15539
15540 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15541
15542         * mini-ppc.c: fixed memory corruption for localloc(0)
15543         (bug #81852).
15544
15545 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15546         
15547         * mini.c: Fix warnings.
15548
15549 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15550
15551         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15552         to emit better double->int conversions.
15553
15554 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15555
15556         * mini.c: the provided Min/Max optimizations are valid for unisgned
15557         ints.
15558
15559 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15560
15561         * 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
15562
15563 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15564
15565         * mini.c (mono_running_on_valgrind): Add support for reporting the
15566         method and  its boundaries to valgrind.
15567
15568 2007-06-28  Martin Baulig  <martin@ximian.com>
15569
15570         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15571
15572 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15573
15574         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15575
15576         * generic.2.cs: Add new test case.
15577
15578 2007-06-25  Martin Baulig  <martin@ximian.com>
15579
15580         Merged the `debugger-dublin' branch.
15581
15582         * debug-mini.c
15583         (mono_debugger_insert_method_breakpoint): New public method.
15584         (mono_debugger_remove_method_breakpoint): Likewise.
15585         (mono_debugger_check_breakpoints): New static method.
15586         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15587
15588         * debug-debugger.h (MonoDebuggerInfo):
15589         Renamed (to keep backward compatibility in the vtable):
15590         `insert_breakpoint' -> `old_insert_breakpoint'.
15591         `remove_breakpoint' -> `old_remove_breakpoint'.
15592         `create_string' -> `old_create_string'.
15593         `lookup_class' -> `old_lookup_class'.
15594         `lookup_type' -> removed; changed into a dummy field.
15595         `lookup_assembly' -> `old_lookup_assembly'.
15596         Added (same functionality, but different signature):
15597         `create_string', `lookup_class', `lookup_assembly'
15598         Added new:
15599         `get_method_addr_or_bpt', `remove_method_breakpoint',
15600         `runtime_class_init'.
15601
15602         * debug-debugger.c: Merged the `debugger-dublin' branch.
15603
15604 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15605
15606         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15607         well.
15608         (peephole_pass): Likewise.
15609
15610 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15611
15612         * driver.c: hopefully make setaffinity work also for ancient
15613         versions of linux.
15614
15615 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15616
15617         * driver.c : win32 build fix.
15618
15619 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15620
15621         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15622         processor if it is set.
15623
15624 2007-06-21  Martin Baulig  <martin@ximian.com>
15625
15626         * debug-mini.h: New file.
15627
15628         * debug-mini.c
15629         (mono_debugger_insert_breakpoint_full): Moved here from
15630         ../metadata/mono-debug-debugger.c.
15631         (mono_debugger_remove_breakpoint): Likewise.
15632         (mono_debugger_breakpoint_callback): Likewise.
15633
15634 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15635
15636         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15637         changes in MonoGenericClass.
15638
15639 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15640
15641         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15642
15643 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15644
15645         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15646         removal of MonoGenericMethod.
15647
15648 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15649
15650         * mini-exceptions.c: hooks for the exception events profiling API.
15651
15652 2007-06-14  Randolph Chung  <tausq@debian.org>
15653
15654         * Makefile.ma: Add hppa target.
15655         * mini-arch.h: Include mini-hppa.h
15656         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15657         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15658         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15659
15660 2007-06-14  Randolph Chung  <tausq@debian.org>
15661
15662         * inssel.brg: Add rules for "chained" compare-branch operations so that
15663         a single compare op can affect multiple branches.  Adjust cost for
15664         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15665         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15666         cost for some rules so that they can more easily be overridden by
15667         per-arch rules (with fixes from lupus).
15668         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15669
15670 2007-06-13  Randolph Chung  <tausq@debian.org>
15671
15672         * mini-ops.h: Reorder branch ops so that they match the order of the
15673         corresponding CEE_* ops.  The code expects them this way.
15674         Add new ops for HPPA target.
15675         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15676
15677 2007-06-13  Randolph Chung  <tausq@debian.org>
15678
15679         * mini-exceptions.c: Handle cases where the stack grows towards
15680         larger addresses.
15681         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15682
15683 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15684
15685         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15686         counter.
15687         * driver.c: explain where a non-matching corlib is found.
15688
15689 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15690
15691         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15692
15693 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15694
15695         * mini-exceptions.c: Generate a method profile leave event during
15696         an exception to ensure that the profiler gets notified.
15697
15698 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15699
15700         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15701         branch.
15702
15703         * cpu-amd64.md: Add long_and/or/xor opcodes.
15704
15705 2007-06-06  Wade Berrier  <wberrier@novell.com>
15706
15707         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15708         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15709         length of instruction shr_imm (expected 8, got 10)
15710
15711 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15712
15713         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15714
15715 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15716
15717         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15718         MonoInternalHashTable again (fixed bug in the internal hash table
15719         code).
15720
15721 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15722
15723         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15724         Have to figure out what makes it crash the SWF regression.
15725
15726 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15727
15728         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15729
15730 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15731
15732         * mini.c: optimize out the type check when storing null in a
15733         reference array.
15734
15735 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15736
15737         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15738         MonoInternalHashTable.
15739
15740 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15741
15742         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15743         signed integer methods.
15744
15745 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15746
15747         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15748         permanently since the current approach doesn't work.
15749
15750 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15751
15752         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15753         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15754
15755 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15756
15757         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15758         the sreg2==rdx case.
15759         
15760         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15761         account if it contains a rex prefix.
15762         (peephole_pass): Handle OP_FMOVE as well.
15763
15764 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15765
15766         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15767         as it causes regressions.
15768
15769 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15770
15771         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15772         static case as well.
15773
15774         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15775
15776         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15777         (mono_arch_get_this_arg_from_call): Ditto.
15778
15779         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15780
15781         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15782         invoke_impl field.
15783
15784         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15785         (mono_arch_get_this_arg_from_call): Ditto.
15786
15787         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15788         
15789         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15790         try to create optimized invoke code and use that for further invocations. 
15791         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15792
15793         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15794
15795 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15796
15797         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15798         sealed classes or methods.
15799         *devirtualization.cs: tests for the new optimization
15800
15801 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15802
15803         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15804         by the update_volatile () function.
15805
15806 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15807
15808         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15809         require it.
15810
15811         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15812
15813 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15814
15815         * mini.c: Add configure checks for header files.
15816         * mini-x86.c: Add configure checks for header files.
15817         * trace.c: Add configure checks for header files.
15818         * aot-runtime.c: Add configure checks for header files.
15819         * aot-compiler.c: Add configure checks for header files.
15820         * driver.c: Add configure checks for header files.
15821         * mini-codegen.c: Add configure checks for header files.
15822         
15823         Code is contributed under MIT/X11 license.
15824
15825 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15826
15827         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15828         icompare_imm -128 + op_iclt. Fixes #81703.
15829
15830 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15831
15832         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15833
15834 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15835
15836         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15837         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15838         so that all isinst checks now use "interface_bitmap".
15839
15840 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15841
15842         * cpu-amd64.md (jmp): Fix a warning.
15843
15844         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15845
15846         * basic.cs: Add new regression test.
15847
15848         * basic.cs: Remove test which is now in basic-long.cs.
15849
15850         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15851
15852         * basic-long.cs: Add new test.
15853         
15854 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15855
15856         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15857
15858 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15859
15860         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15861
15862         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15863         places.
15864         
15865         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15866         throwing code a bit.
15867
15868         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15869         the exception throwing code a bit.
15870
15871         * mini-x86.c (get_call_info): Allocate result from a mempool.
15872
15873 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15874
15875         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15876
15877         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15878
15879         * mini.h (MonoCompile): Add 'token_info_hash' field.
15880
15881         * mini.c: Save token->method associations during compilation so the AOT 
15882         compiler can use it.
15883         
15884         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15885         which reference generic classes and methods.
15886
15887 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15888
15889         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15890
15891         * aot-compiler.c (compile_method): Fix a typo in a comment.
15892
15893         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15894
15895         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15896         everything generic.
15897
15898         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15899
15900 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15901
15902         * mini.h (MonoCompile): Add 'args' field.
15903
15904         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15905         into cfg->args.
15906
15907         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15908
15909 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15910
15911         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15912
15913         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15914
15915         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15916         opcodes for some opcodes.
15917
15918         * mini.h *.brg *.c: Use the new opcodes.
15919
15920 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15921
15922         * mini.h: Bumped aot revision.
15923
15924         * inssel.brg: modified code generation of type checks for interfaces
15925         to use the new "MonoClass.interface_bitmap" instead of the old
15926         "MonoClass.interface_offsets".
15927
15928 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15929
15930         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15931
15932 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15933
15934         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15935         64 bit platforms.
15936
15937 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15938
15939         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15940
15941 2007-04-27  Wade Berrier  <wberrier@novell.com>
15942
15943         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15944         mini.h) to fix build.
15945
15946 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15947
15948         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15949         
15950         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15951         causes the corlib unit tests to fail.
15952
15953 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15954
15955         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15956
15957         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15958
15959         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15960         opcodes to the comparison relations.
15961
15962         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15963         opcodes to their types.
15964         
15965         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15966
15967         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15968         it in cfg->arch.cinfo.
15969
15970         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15971
15972         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15973         cfg->cil_offset_to_bb.
15974
15975 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15976
15977         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15978         created becase of initlocals.
15979
15980 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15981
15982         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15983         Sergey Tikhonov <tsv@solvo.ru>.
15984
15985 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15986
15987         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15988
15989 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15990
15991         * cpu-s390.md (break): Correct the length of break instruction.
15992
15993 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15994
15995         * mini.c: fix a couple of soft-float issues and comments.
15996
15997 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15998
15999         * trace.c (is_filenamechar): - is also a filename char.
16000
16001 2007-04-15  Neale Ferguson <neale@sinenomine.net>
16002
16003         * mini-s390.c: Correct checking for enum type in return value processing.
16004
16005 2007-04-14  Raja R Harinath  <rharinath@novell.com>
16006
16007         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
16008         (version.h): Makefile is in the build directory.
16009
16010 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
16011
16012         * mini-amd64.h: fix for assertion failure on Solaris/amd64
16013
16014 2007-04-11  Martin Baulig  <martin@ximian.com>
16015
16016         * mini.c (can_access_member): Fix handling of generic classes;
16017         fixes #81259.
16018
16019 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
16020
16021         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
16022
16023 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
16024
16025         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
16026
16027 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16028
16029         * mini-codegen.c: make sure the right spill amount is
16030         used for fp or integer registers (fixes the float_sub_spill() on ppc).
16031
16032 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
16033
16034         * mini-ppc.c: fixes for the fp_branch_nan test.
16035
16036 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
16037
16038         * basic.cs: Comment out new test which still fails on ia64.
16039
16040 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
16041
16042         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
16043
16044 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16045
16046         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
16047
16048 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
16049
16050         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
16051         on 64 bit machines. Fixes part of #80738.
16052
16053         * basic.cs: Add regression test.
16054
16055 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
16056
16057         * inssel.brg basic.cs: Revert previous change to fix build.
16058
16059         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
16060         platforms.
16061         
16062         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
16063
16064         * basic.cs: Add new regression test.
16065
16066 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
16067
16068         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
16069         many arguments.
16070
16071 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16072
16073         * cpu-s390x.md: Correct length of break instruction.
16074
16075 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16076
16077         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
16078         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
16079
16080 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
16081
16082         * *.c: Begin WIN64 port.
16083         * mini.c:  Use correct register in profiler.
16084         * mini-amd64.c: No inline assembly on Win64.
16085         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
16086         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
16087         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
16088         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
16089         mono_arch_ip_from_context for Win64.
16090         
16091         Contributed under MIT/X11 license.
16092
16093 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
16094
16095         * exceptions-amd64.c (seh_handler): Ditto.
16096
16097         * exceptions-x86.c (seh_handler): Fix a memory leak.
16098
16099 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
16100
16101         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
16102         mini-s390x.c: fixed peephole optimizations to deal
16103         correctly with 1 and 2 byte reload avoidance.
16104
16105 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
16106
16107         * cpu-s390.md, cpu-s390x.md: update localloc length.
16108
16109 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16110
16111         * cpu-g4.md: added missing descriptions.
16112
16113 2007-03-14  Miguel de Icaza  <miguel@novell.com>
16114
16115         *  Makefile.am: Add support so the tail tests are not executed on
16116         PowerPC as that is a known limitation of the PowerPC port.
16117
16118 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16119
16120         * runmdesc.bat:  Move to msvc directory.
16121         
16122 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16123
16124         * runmdesc.bat:  Run executable that was produced by the current
16125         target and sent via an argument.
16126         
16127 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
16128
16129         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
16130         #81102.
16131
16132         * generics.2.cs: Add regression test.
16133
16134 2007-03-09  Wade berrier  <wberrier@novell.com>
16135
16136         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
16137
16138 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
16139
16140         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
16141         AOT code depends on this.
16142
16143 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16144
16145         * mini.c: more precise tracking of types in the eval stack
16146         (part of fix for bug #81044).
16147
16148 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
16149
16150         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
16151
16152         * aot-compiler.c (encode_patch): Remove an obsolete comment.
16153
16154 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16155
16156         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
16157
16158         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
16159
16160 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
16161
16162         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
16163         a pointer on 64 bit systems. Fixes #80190.
16164
16165         * iltests.il: Add new regression test.
16166
16167 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16168
16169         * mini.c: inline a constant for Environment.IsRunningOnWindows.
16170
16171 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
16172
16173         * trace.c: Remove an erroneous alignemnt check when tracing.
16174           Fixes --trace on OSX86.
16175
16176 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16177
16178         * mini-$(arch).h: initialize SP in context for all the archs.
16179
16180 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
16181
16182         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16183         regressions in the thread tests.
16184
16185 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16186
16187         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16188         - fixed implementation of LOCALLOC opcode
16189         - implemented non-un compare for floats
16190         - code cleanup
16191         - implementation of FDIV and CKFINITE opcodes
16192         - fixes for latest mono updates
16193         - additional arch opcodes
16194
16195 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16196
16197         * Makefile.am: simplify and merge rules for cross-compilation.
16198
16199 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16200
16201         * local-propagation.c: Actually *apply* the fix for bug 80591...
16202
16203 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16204
16205         * mini-exceptions.c: backuot part of the last change
16206         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16207
16208 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16209         * inssel.brg: Fix bug 59286.
16210
16211
16212 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16213
16214         * mini-exceptions.c: patch from Zoltan to correctly check for
16215         stack boundaries (using the stack register, not the frame register),
16216         fixes bugs #80724, #79717.
16217
16218 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16219
16220         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16221         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16222
16223         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16224         presence of frame pointer elimination.
16225
16226 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16227         
16228         * mini-x86.h: NetBSD UCONTEX_REG defines.
16229
16230 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16231
16232         * inssel-amd64.brg: Fix amd64 build.
16233
16234 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16235
16236         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16237         on amd64.
16238
16239 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16240
16241         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16242         ends.
16243
16244         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16245
16246 2007-01-30 Mark Mason <mason@broadcom.com>
16247
16248            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16249            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16250            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16251            beginning support for CEE_JMP [not quite working yet]
16252            * tramp-mips.c: LMF handling now works
16253         
16254 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16255
16256         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16257
16258         * mini.h (NULLIFY_INS): New macro.
16259
16260 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16261
16262         * mini.c: statistical profiler fix for windows, patch
16263         from Tor Lillqvist (tml@novell.com).
16264
16265 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16266         * local-propagation.c: Fix bug 80591.
16267
16268 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16269
16270         * Makefile.am: put back the --export-dynamic option as with
16271         the previous gmodule flags (thanks to Robert Jordan).
16272
16273 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16274
16275         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16276
16277         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16278         simplify and speed up the local register allocator. Also rename some fields
16279         like iassign->vassign.
16280         
16281         * regalloc.c: Remove some functions which are no longer used since their
16282         inlined version is in mini-codegen.c.
16283         
16284         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16285
16286         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16287
16288 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16289
16290         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16291         narrowing. Fixes #80622.
16292
16293         * iltests.il: Add new regresssion test. 
16294
16295 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16296
16297         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16298         debug-debugger.c, debug-debugger.h: warning fixes.
16299         * driver.c: updated copyright year and made it fit in one line.
16300
16301 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16302
16303         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16304
16305 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16306
16307         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16308
16309         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16310
16311         * iltests.il: Add new test for bug #80507.
16312
16313 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16314
16315         * mini-arm.h: use soft-float also on vfp for now.
16316
16317 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16318
16319         * mini.c: fix some more soft-float issues.
16320
16321 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16322
16323         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16324
16325 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16326         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16327         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16328         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16329
16330 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16331
16332         * mini-arm.c: typo fix.
16333
16334 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16335
16336         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16337
16338 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16339
16340         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16341         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16342
16343         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16344
16345         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16346
16347         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16348         
16349         * inssel.brg: Fix a warning.
16350
16351         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16352
16353         * abcremoval.c ssa.c ssapre.c: Update after this change.
16354         
16355         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16356
16357         * dominators.c (df_set): Use mono_bitset_union_fast.    
16358
16359 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16360
16361         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16362         mini-codegen.c: reduce relocations and memory usage for the cpu
16363         description.
16364
16365 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16366
16367         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16368
16369         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16370         to reduce their size.
16371
16372 2007-01-19 Mark Mason <mason@broadcom.com>
16373
16374         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16375         * mini-mips.c: more configuration macros, support long conditional branches, additional
16376         asserts, fix epilog instrumentation.
16377         * mini-mips.h: use standard stack walk
16378         * cpu-mips.md: increase size of div, rem and conditional branches
16379         
16380 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16381
16382         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16383         to cpu spec data.
16384
16385 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16386
16387         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16388         (compile_method): Ditto.
16389
16390         * aot-runtime.c (decode_klass_info): Ditto.
16391
16392         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16393         needed by the code generated by inssel.brg. Also fix a warning.
16394
16395 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16396
16397         * mini.c: deal with enums that become genericinsts by
16398         being nested in a generic class (bug #79956).
16399
16400 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16401
16402         * mini.c: match the generic definition to check for
16403         private access with generic types (bug #78431).
16404
16405 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16406
16407         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16408         to make life easier for people cross-compiling that insist on not
16409         using scratchbox.
16410
16411 2007-01-17 Mark Mason <mason@broadcom.com>
16412
16413         * inssel-long.brg: patch to deal with mips missing flags
16414         * inssel-long32-mips.brg: implement overflow checks
16415         * insset-mips.brg: implement overflow checks
16416         * mini-mips.h: implement conditional exception handling
16417         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16418           Remove unused code, minor cleanups.
16419         * exceptions-mips.c: minor cleanups
16420         * mini-ops.h: add mips conditional exception ops
16421         * cpu-mips.md: add mips conditional exception ops
16422
16423         
16424 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16425
16426         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16427         to deal with mips missing of flags.
16428
16429 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16430
16431         * exceptions-ppc.c: execute fault handlers.
16432
16433 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16434
16435         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16436
16437 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16438
16439         * mini.c: handle also floating point values in initialize_array.
16440
16441 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16442
16443         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16444         array initialization and make it conditional on the intrins option.
16445
16446 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16447
16448         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16449         relocations and put the patch info names close to the enum definition.
16450
16451 2007-01-15 Mark Mason <mason@broadcom.com>
16452
16453         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16454
16455 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16456
16457         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16458
16459 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16460
16461         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16462
16463 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16464
16465         * Makefile.am: distribute the mips sources.
16466
16467 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16468
16469         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16470         directly.
16471
16472 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16473
16474         * cpu-x86.md: back out for now as this triggers other regressions.
16475
16476 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16477
16478         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16479         to eax:edx, so ecx can't get allocated to them (bug #80489).
16480
16481 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16482
16483         * mini.c, mini-exceptions.c: enabled running fault handlers
16484         (bug #80469).
16485
16486 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16487
16488         * driver.c: If nothing fail, do not use the string "failed",
16489         because it makes it very annoying to view test result logs on the
16490         web. 
16491
16492 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16493
16494         * debug-debugger.c (mono_debugger_main): Rename "main" to
16495         "main_method" to prevent a warning.
16496
16497         Remove a warning for unused field.
16498
16499 2006-12-28  Martin Baulig  <martin@ximian.com>
16500
16501         * debug-debugger.c
16502         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16503
16504 2006-12-22  Martin Baulig  <martin@ximian.com>
16505
16506         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16507         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16508         seperate `.mdb_debug_info' section, so we can access it from the
16509         debugger even if the binary is stripped.
16510
16511         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16512         from the `.mdb_debug_info' here to prevent the linker from
16513         removing that section.
16514
16515         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16516         mdb-debug-info64.s.
16517
16518 2006-12-19  Robert Jordan  <robertj@gmx.net>
16519
16520         * mini-x86: enable the code to return small structures in
16521         registers for FreeBSD as well. Fixes bug #80278.
16522         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16523
16524 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16525
16526         * mini-x86.c: align the stack when calling the profiler
16527         function instrumenting the prolog (on OSX).
16528
16529 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16530
16531         * mini.c: emit a break opcode where Debugger.Break () is called.
16532
16533 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16534
16535         * mini.c (mono_method_to_ir): Provide useful information on this
16536         assert, to prevent others from debugging like I did.
16537
16538 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16539
16540         * mini.c: enable code which was incorrectly commented
16541         (bug #80235).
16542
16543 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16544
16545         * mini-x86.c: enable on OSX, too, the code to return small
16546         structures in registers.
16547
16548 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16549
16550         * mini-x86.c: remove the use of the dynamic code manager here, too.
16551
16552 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16553
16554         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16555         mono_debugger_create_notification_function() to use
16556         mono_global_codeman_reserve () instead of a dynamic code manager.
16557
16558 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16559
16560         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16561         ves_array_element_address() jit icall and use a generated
16562         managed method instead (which is about 4 times faster for a rank 3
16563         array access).
16564
16565 2006-11-29  Mark Mason  <mason@broadcom.com>
16566
16567         * basic-calls.cs: additional tests for passing
16568         structures as function arguments.
16569
16570 2006-11-29  Mark Mason  <mason@broadcom.com>
16571
16572         * mini-mips.h: disable custom exception handling
16573         * mini-mips.c: throw/rethrow should use jalr to call
16574         exception stubs.  Fixed bug with passing structures
16575         by value. More support for tracing floating point
16576         functions.
16577
16578 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16579
16580         * mini.c: fixed typo in the soft-float ldind.r4 handling
16581         (bug #80086).
16582
16583 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16584
16585         * mini.c, mini.h, driver.c: added --runtime command line
16586         option to select a different runtime than the autodetected one.
16587         * jit.h: added API for embedders to initialize with a specific
16588         runtime version.
16589
16590 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16591
16592         * mini.c: handle also boxing of r4 values (bug #80024).
16593
16594 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16595
16596         * mini-ppc.c: force indirect calls until we reserve
16597         enough address space for all the generated code.
16598
16599 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16600
16601         * exceptions-arm.c: workaround bugs in the libc definition
16602         of struct ucontext.
16603
16604 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16605
16606         * inssel.brg: fixes from me and Mark Mason.
16607
16608 2006-11-23  Dick Porter  <dick@ximian.com>
16609
16610         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16611         semaphore display now we've fixed the initial value
16612
16613 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16614
16615         * inssel.brg: partially revert the last change to fix the build.
16616
16617 2006-11-21  Mark Mason  <mason@broadcom.com>
16618
16619         * inssel.brg: Add and use compare-and-branch macros to support
16620         architectures that do not have condition code registers (ie. MIPS).
16621         * *-mips.{c,brg,md}: Fix copyright statements
16622
16623 2006-11-20  Mark Mason  <mason@broadcom.com>
16624
16625         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16626         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16627         * mini.h: Added declaration for mono_print_ins()
16628         * mini-codegen.c: added ins_spec initializer for MIPS
16629         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16630         vreg to be virtual and hreg to be non-virtual.
16631         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16632         is not yet working/implemented correctly.
16633         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16634         non-static, fixup calls to print_ins() from other parts in the file.
16635
16636 2006-11-20  Mark Mason  <mason@broadcom.com>
16637
16638         * basic-calls.cs: added tests for passing structures as arguments
16639         to calls.
16640
16641 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16642
16643         * inssel-long32.brg: optimize signed division by power of two.
16644
16645 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16646
16647         * mini-arm.c: added support for interworking with thumb code
16648         (mono must be still be built using the ARM instruction encoding).
16649
16650 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16651
16652         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16653         verifier has different rules for it.   Fixes a few verifier issues
16654         in the test suite.
16655
16656         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16657         at the end, so people know what happened.
16658
16659 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16660
16661         * brach-opts.c: in optimize_exception_target() make sure we
16662         are in a catch clause (fixes bug #79871).
16663
16664 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16665
16666         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16667         more soft-float support fixes.
16668
16669 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16670
16671         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16672         that are passed half on the stack and half in registers.
16673
16674 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16675
16676         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16677         more mips integration work from Mark E Mason 
16678         <mark.e.mason@broadcom.com>.
16679
16680 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16681
16682         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16683         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16684         tramp-mips.c: added sources for the mips port, not
16685         integrated in the build yet. Contributed by
16686         Mark E Mason <mark.e.mason@broadcom.com>.
16687
16688 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16689
16690         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16691
16692 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16693
16694         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16695         put the soft-float rules in its own file since it seems to
16696         break s390 compilation.
16697
16698 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16699
16700         * mini-arm.c: fixed wrnings.
16701
16702 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16703
16704         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16705         inssel-arm.brg: ARM support for soft-float.
16706
16707 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16708
16709         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16710         loads and stores of 32 bit fp values.
16711
16712 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16713
16714         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16715
16716         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16717         works. Fixes #79852 and #79463.
16718
16719 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16720
16721         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16722         more soft-float support WIP and fixes.
16723
16724 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16725
16726         * mini-arm.c: some VFP updates.
16727
16728 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16729
16730         * mini-exceptions.c: 0 is a valid local var offset in some
16731         architectures, don't assert (bug #78508).
16732
16733 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16734
16735         * exceptions-arm.c: fixed off by one error in stack walk code.
16736
16737 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16738
16739         * mini.h, mini.c: more precise tracking of type load exceptions.
16740
16741 2006-11-03  Robert Jordan  <robertj@gmx.net>
16742
16743         * Makefile.am: [WIN32] Add monow.exe target.
16744         * driver.c: [WIN32] Don't detach the console when debugging.
16745         Fixes bug #79797.
16746         
16747 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16748
16749         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16750
16751 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16752
16753         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16754
16755         * driver.c (mini_regression): Fix --regression with AOT.
16756
16757         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16758
16759 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16760
16761         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16762
16763         * mini-sparc.h: Don't use sigaction on sparc/linux.
16764
16765         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16766
16767         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16768
16769         * mini-exceptions.c: Add proper include files for getpid ().
16770
16771 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16772
16773         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16774         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16775         method.
16776
16777         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16778         name cache to reduce its size.
16779
16780         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16781
16782 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16783
16784         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16785         the mono_lmf TLS variable.
16786
16787         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16788         trampoline lmf frames.  
16789
16790         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16791
16792 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16793
16794         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16795         the mono_lmf TLS variable.
16796
16797         * mini-exceptions.c: Access the LMF structure through accessors.
16798
16799         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16800         variable instead of in jit_tls->lmf.
16801
16802         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16803         
16804         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16805         trampoline lmf frames.
16806
16807         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16808
16809 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16810
16811        * mini.c trace.c mini-x86.c: Revert these too.
16812         
16813        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16814        signature change.
16815
16816 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16817
16818         * genmdesc.c: removed now dead code.
16819
16820 2006-10-09  Robert Jordan <robertj@gmx.net>
16821
16822         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16823
16824 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16825
16826         * mini.h: do not leave gaps in the opcode values.
16827
16828 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16829
16830         * jit-icalls.h: flag functions as internal here, too.
16831
16832 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16833
16834         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16835         functions with the internal attribute.
16836
16837 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16838
16839         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16840
16841 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16842
16843         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16844         for soft-float.
16845
16846 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16847
16848         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16849         tail calls as on other platforms.
16850
16851         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16852
16853         * iltests.il: Add a few tailcall tests.
16854
16855 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16856
16857         * driver.c: fix loop for old compilers (bug #79521).
16858
16859 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16860
16861         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16862
16863         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16864
16865         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16866         metadata without any code.
16867
16868         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16869         more precise debugging information using gdb.
16870
16871 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16872
16873         * inssel-ia64.brg: Make the helper methods static.
16874
16875 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16876
16877         * inssel-x86.brg: make the helper methods static.
16878
16879 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16880
16881         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16882
16883 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16884
16885         * mini.c: updates for monoburg changes.
16886         * inssel.brg: make a few helper functions static as they should.
16887
16888 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16889
16890         * Makefile.am: Move mini-codegen.c to common_sources.
16891
16892 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16893
16894         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16895         instructions.
16896         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16897         mini-ppc.h: port to use the common local register allocator.
16898
16899 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16900
16901         * mini.h: Remove the comment too then.
16902
16903 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16904
16905         * mini.h: put back backend.data which is to be used shortly and
16906         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16907         pointers on 4 byte boundaries it'd have much bigger issues running
16908         and you can ifdef it out anyway.
16909
16910 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16911
16912         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16913         MonoInst size by 4 bytes on 64 bit machines.
16914
16915 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16916
16917         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16918         replacement with more meaningful field names. Arch maintainers, please
16919         check the assigned names are good enough for your arch.
16920
16921 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16922
16923         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16924         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16925
16926 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16927
16928         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16929         relocations and memory requirements, put the optimization flags
16930         definitions in their own file.
16931
16932 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16933
16934         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16935
16936         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16937
16938 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16939
16940         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16941
16942 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16943
16944         * inssel.brg: use the correct function to get the size of an item
16945         in an array, given an element class.
16946         * aot-compiler.c: do not access class->class_size directly.
16947
16948 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16949
16950         * mini.h, debug-mini.c: added a debugging function to print
16951         info about local variables and arguments in a jitted method.
16952
16953 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16954
16955         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16956
16957         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16958
16959 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16960
16961         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16962         inner and outer loops when passing vtypes.
16963
16964 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16965
16966         * mini-ppc.c: take into account the cpu errata for cache flushing
16967         which caused some random errors (bug #79381).
16968
16969 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16970
16971         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16972         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16973
16974 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16975
16976         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16977         loaded.
16978
16979         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16980         freebsd ports tree.
16981
16982         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16983         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16984
16985         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16986         displacement.
16987
16988 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16989
16990         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16991
16992 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16993
16994         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16995         macro does not have to be changed during debugging.
16996
16997         * 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>.
16998
16999         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
17000
17001         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
17002         
17003         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
17004         MONO_ARCH_NO_EMULATE_MUL is defined.
17005
17006         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
17007
17008         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
17009
17010         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
17011
17012         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
17013         
17014 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
17015
17016         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
17017         stuff to mini-exceptions.c where it is used.
17018
17019         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
17020         setup code, the real one is in mini-exceptions.c.
17021
17022         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
17023         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
17024         some changes from the freebsd ports tree.
17025
17026         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
17027         constants.
17028         
17029         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
17030
17031 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
17032
17033         * mini.c: on Linux, check for /proc to be mounted
17034         (bug# 79351, novell bug#201204).
17035
17036 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
17037
17038         * mini.c: handle cases where pthread_attr_getstack() behaves
17039         incorrectly (bug #78096).
17040
17041 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
17042
17043         * mini-arm.c: support larger stack frames (bug #79272).
17044
17045 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
17046
17047         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
17048
17049         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
17050         tokens.
17051
17052         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
17053         mono_class_from_name () to find a class from its name.
17054
17055         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
17056
17057 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
17058
17059         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
17060
17061 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
17062
17063         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
17064
17065 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
17066
17067         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
17068         callinfo->trampoline.
17069
17070         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
17071         fixes #79271.
17072         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
17073         future.
17074
17075 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
17076
17077         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
17078
17079 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
17080
17081         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
17082         stats.method_trampolines, it is already done by the generic trampoline code.
17083
17084         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
17085         
17086 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
17087
17088         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
17089
17090         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
17091
17092         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
17093
17094         * mini.c (print_jit_stats): Print mscorlib mempool size too.
17095         
17096         * mini.c (print_jit_stats): Print new stats.
17097
17098         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
17099
17100 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
17101
17102         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
17103         Address on two dimensional arrays. Fixes #78729.
17104
17105         * mini.h (MonoCompile): Add a 'skip_visibility' field.
17106
17107         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
17108         a method.
17109
17110         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
17111
17112         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
17113         #79130.
17114         
17115         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
17116         a race condition.
17117         (mini_get_ldelema_ins): Ditto.
17118
17119 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
17120
17121         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
17122         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
17123         Fixes #79213.
17124
17125 2006-08-29 Neale Ferguson <neale@sinenomine.net>
17126
17127         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
17128         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
17129
17130         * exceptions-s390x.c: Cosmetic change.
17131
17132         * tramp-s390.c: Fix warning.
17133
17134         * cpu-s390.md: Correct length of mul_imm.
17135
17136 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
17137
17138         * aot-compiler.c: added binary writer with ELF backend
17139         implementation (only on Linux/x86 for now).
17140
17141 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17142
17143         * Makefile.am: Don't run net 2.0 AOT tests.
17144
17145         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
17146         (mono_compile_assembly): Skip net 2.0 assemblies as well.
17147
17148         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
17149
17150 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17151
17152         * aot-compiler.c: simplified and refactored the asm-writing code
17153         to allow different backends.
17154
17155 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17156
17157         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
17158
17159         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
17160         little. Share patches of type TYPE_FROM_HANDLE as well.
17161
17162         * mini.c (mono_patch_info_equal): New helper function.
17163         (mono_patch_info_hash): Ditto.
17164
17165         * aot-compiler.c (emit_method_code): Fix s390 build.
17166
17167         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
17168         is not handled because it is stored as a flag and not as a type ctor. Fixes
17169         #79016.
17170
17171 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
17172
17173         * aot-compiler.c: Fix computation of GOT slot statistics.
17174         
17175         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
17176         Also remove support for not PIC AOT.
17177
17178         * mini.h: Bump AOT file format version.
17179
17180         * objects.cs: Add a test for #78990.
17181
17182         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17183         (peter.dettman@iinet.net.au). Fixes #79087.
17184
17185         * basic-long.cs: Add a test for the above.
17186
17187 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17188
17189         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17190         
17191         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17192         code somewhat.
17193
17194 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17195
17196         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17197         exceptions.
17198
17199 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17200
17201         * mini.c: Don't verify COM proxy invoke calls
17202         
17203
17204 2006-08-10  Dick Porter  <dick@ximian.com>
17205
17206         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17207         which process is holding semaphores locked.
17208
17209 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17210
17211         * mini-ia64.c mini-amd64.c: Fix #79027.
17212
17213         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17214
17215         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17216
17217         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17218         implicit arguments in a vararg call. Fixes #79027.
17219
17220 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17221
17222         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17223         (mono_get_array_new_va_signature): Ditto.
17224
17225 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17226
17227         * aot-runtime.c: Call init_plt lazily.
17228
17229         * inssel-long.brg: Fix unsigned long->int conversion.
17230
17231         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17232
17233         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17234         that most data is now in the .rss/.data section.
17235
17236 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17237
17238         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17239
17240         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17241
17242         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17243
17244         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17245
17246         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17247         virtual call. Fixes #79010.
17248
17249         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17250         and use the result as the this argument in the real call.
17251
17252         * generics.2.cs: Add a new test for #79010.
17253         
17254 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17255
17256         * mini-x86.c: Fix a warning.
17257
17258         * aot-compiler.c: Add a bunch of statistics.
17259
17260         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17261
17262 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17263
17264         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17265
17266 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17267
17268         * 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>.
17269
17270 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17271
17272         * mini.c (mono_method_to_ir): Obtain the original method in the
17273         CIL stream and use this to perform validation.
17274
17275         Fixed: #78816
17276
17277 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17278
17279         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17280         (mono_arch_call_opcode): Ditto.
17281
17282         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17283         #78826.
17284
17285         * mini.c (mono_patch_info_dup_mp): New helper function.
17286         
17287         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17288         compilation. Fixes #78827.
17289
17290 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17291
17292         * declsec.c: Use original security informations for
17293           MONO_WRAPPER_MANAGED_TO_MANAGED.
17294
17295 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17296
17297         * mini.c: Allow Com Interop methods/classes and
17298         don't verify COM wrapper calls
17299         
17300
17301 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17302
17303         * inssel-long32.brg: Fix long->i4 checked conversion.
17304
17305         * exceptions.cs: Add a test for the above.
17306
17307 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17308
17309         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17310
17311         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17312         leaks.
17313
17314         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17315         #78775.
17316
17317 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17318
17319         * mini.c: Fix solaris/x86 exception handling.
17320
17321         * Makefile.am: Get rid of $(ICU_LIBS).
17322
17323 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17324
17325         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17326         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17327         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17328
17329         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17330
17331         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17332         this function causes a SIGSEGV.
17333
17334 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17335
17336         * mini.c: Remove unused solaris/x86 includes.
17337
17338 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17339
17340         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17341
17342 2006-06-20  Jb Evain  <jbevain@gmail.com>
17343
17344         * cpu-g4.md: fix max length of start_handler instruction.
17345
17346 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17347         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17348
17349 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17350         * ssa.c: Fixed bug 78653 for SSA based deadce.
17351         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17352         MonoInst.flags, used in SSA based deadce.
17353         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17354         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17355
17356 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17357
17358         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17359         it can end up using non executable memory on ppc64 systems
17360         running ppc32 userspace (fix from Johannes Berg).
17361
17362 2006-06-14  Dick Porter  <dick@ximian.com>
17363
17364         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17365         4.1.1
17366
17367 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17368         * mini.c: Made so that inline is locally disabled if it would
17369         trigger a .cctor, because too many apps depend on this behavior
17370         (which seems to be also the one of the MS CLR).
17371
17372 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17373
17374         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17375         No idea why this worked before.
17376
17377         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17378         which branch to outer exception clauses since they could skip the
17379         inner finally clauses. Fixes #78633.
17380
17381         * exceptions.cs: Add a test for the above.
17382
17383         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17384         Fixes #78629.
17385
17386         * iltests.il: Add a test for the above.
17387
17388 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17389
17390         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17391         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17392
17393         * iltests.il: Add a test for the above.
17394
17395 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17396
17397         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17398         
17399         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17400         methods as instrinsics.
17401
17402 2006-06-09  Wade Berrier <wberrier@novell.com>
17403
17404         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17405         (simple-cee-ops.h ssapre-mini-ops.h)
17406
17407 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17408
17409         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17410         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17411         instruction).
17412         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17413         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17414
17415 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17416
17417         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17418
17419 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17420
17421         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17422         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17423         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17424         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17425         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17426         of opcodes, so that bug 78549 should not happen again.
17427         * ssapre.c: Updated to use the renamed files.
17428
17429 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17430
17431         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17432         in OP_ATOMIC_EXCHANGE_I4.
17433
17434 2006-06-07  Wade Berrier <wberrier@novell.com>
17435
17436         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17437         in mono_debugger_create_notification_function)
17438
17439 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17440
17441         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17442         
17443         * mini.c (type_from_stack_type): Disable some changes which do not
17444         seem to work.
17445
17446         * driver.c: Reenable opts.
17447
17448         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17449         of the evaluation stack.
17450         
17451         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17452         evaluation stack trace at entry to the bblock.
17453
17454         * mini.c (merge_stacks): New function to perform verification of stack merges.
17455         Turned off by default.
17456
17457         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17458         STACK_MP.
17459         
17460 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17461
17462         * local-propagation.c: Fixed bug 78549.
17463
17464 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17465
17466         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17467
17468 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17469
17470         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17471         tramp-arm.c, tramp-ia64.c
17472         (mono_debugger_create_notification_function): Update signature to
17473         new signature and use new protocol for creating the notification
17474         function.  
17475
17476         Should fix the build.
17477
17478 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17479
17480         * exceptions-ppc.c (mono_jit_walk_stack)
17481         (ves_icall_get_frame_info): Fix the build
17482
17483 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17484
17485         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17486
17487 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17488
17489         * il2tests.2.il: New file for generics CIL tests.  Add test for
17490         #78019.
17491         * Makefile.am: Update.
17492
17493         Fix #78019
17494         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17495         to nullable types.
17496
17497 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17498
17499         * aliasing.c: Fixed bug 78311.
17500
17501 2006-05-29  Martin Baulig  <martin@ximian.com>
17502
17503         * mini-exceptions.c (mono_find_jit_info): When computing the
17504         native offset, check whether we're actually inside the method's
17505         code; call mono_debug_print_stack_frame() to format the frame.
17506         (ves_icall_System_Exception_get_trace): Call
17507         mono_debug_print_stack_frame() to format the stack frame.
17508         (ves_icall_get_trace): Update to the new debugging API.
17509         (mono_jit_walk_stack_from_ctx): Likewise.
17510         (ves_icall_get_frame_info): Likewise.
17511
17512         * mini.c (get_method_from_ip): Use the new debugging API.
17513         (mono_print_method_from_ip): Likewise.
17514
17515         * exceptions-ppc.c
17516         (mono_jit_walk_stack): Use the new debugging API.
17517         (ves_icall_get_frame_info): Likewise.   
17518
17519 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17520
17521         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17522
17523 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17524
17525         * mini.c: Added "limitator" to inline for debugging.
17526
17527 2006-05-24  Martin Baulig  <martin@ximian.com>
17528
17529         * debug-debugger.c (mono_debugger_init): Create a private,
17530         malloc()-based code manager for the notification function and
17531         intentionally leak it on exit.  This fixes the crash-on-exit race
17532         condition.
17533
17534         * tramp-amd64.c
17535         (mono_debugger_create_notification_function): Added
17536         `MonoCodeManager *' argument.
17537
17538         * tramp-x86.c
17539         (mono_debugger_create_notification_function): Added
17540         `MonoCodeManager *' argument.
17541
17542 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17543
17544         * aliasing.c: Fixed 64 bit issue.
17545         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17546         default since all known bugs are fixed (one more time!).
17547
17548 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17549
17550         * mini.c: write barrier support.
17551
17552 2006-05-23  Martin Baulig  <martin@ximian.com>
17553
17554         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17555         check at the top of the file.
17556
17557 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17558
17559         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17560         reverting changes without reason and without changelog entries.
17561
17562 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17563
17564         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17565         to a few opcodes. Fixes #78439.
17566
17567         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17568         consistency with other archs.
17569
17570         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17571
17572 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17573
17574         * debug-debugger.c: fix the build.
17575
17576 2006-05-17  Martin Baulig  <martin@ximian.com>
17577
17578         * debug-debugger.c
17579         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17580         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17581         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17582         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17583
17584 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17585
17586         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17587
17588 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17589
17590         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17591         MONO_TYPE_GENERICINST.
17592         
17593         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17594         MONO_TYPE_GENERICINST.
17595
17596 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17597
17598         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17599         #78325.
17600
17601 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17602
17603         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17604         mempool.
17605         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17606
17607 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17608
17609         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17610         mono_trace_cleanup ().
17611
17612         * iltests.il: Fix problem with the newly added test.
17613
17614         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17615         due to register constraints, free up the previous hreg. Fixes #78314.
17616
17617         * iltests.il: Add new test for #78314.  
17618
17619         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17620         Interlocked.Add. Fixes #78312.
17621
17622         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17623         
17624 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17625
17626         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17627
17628 2006-05-05  Martin Baulig  <martin@ximian.com>
17629
17630         * debug-mini.c (mono_debug_open_block): New method.
17631
17632         * mini-amd64.c
17633         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17634         the beginning of each basic block.
17635
17636         * mini-x86.c
17637         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17638         the beginning of each basic block.
17639
17640 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17641
17642         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17643         default until I understand why they break the build on amd64.
17644
17645 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17646
17647         * mini.c (mini_cleanup): Call mono_cleanup ().
17648
17649         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17650         errors.
17651
17652 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17653
17654         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17655         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17656         default since all known bugs are fixed, and I cannot reproduce bug
17657         77944... I'm asking Matt Hargett to test again after this commit.
17658
17659 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17660
17661         * mini-codegen.c: Fixed typo that thrashed inline.
17662
17663 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17664
17665         * dominators.c (compute_dominators): Avoid using a worklist since
17666         it is not correct in some cases. Instead, iterate over all bblocks as
17667         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17668
17669 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17670
17671         * mini.c (mono_jit_compile_method_inner): Use
17672         mono_prepare_exception_from_error that resets the value
17673         internally.
17674
17675 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17676
17677         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17678         
17679 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17680
17681         * aliasing.c: Fixed bug 78210.
17682
17683 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17684
17685         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17686         default until all their problems (or the ones they trigger) are fixed.
17687
17688 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17689
17690         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17691         
17692         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17693         as loaded only after resolving patches since that could invoke the same method.
17694
17695         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17696
17697         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17698         functions.
17699
17700         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17701         AOT loader.
17702
17703         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17704         stack.
17705
17706         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17707         made from AOT code through the PLT table.
17708
17709         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17710         holding the plt offset when a call is made to the aot plt trampoline.
17711         
17712 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17713
17714         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17715         amd64 AOT support.
17716
17717         * Makefile.am (common_sources): Fix build breakage.
17718
17719         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17720         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17721         intra-assembly calls if possible.
17722         
17723         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17724
17725         * mini-trampolines.c: Handle PLT entries.
17726
17727         * mini.c: Avoid creating a GOT var for calls.
17728
17729         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17730         from mscorlib code.
17731
17732         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17733         from mscorlib code.
17734
17735         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17736         AOT code.       
17737
17738         * mini.h: Bump AOT file format version.
17739         
17740         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17741         covers more cases.
17742
17743 2006-04-25  Martin Baulig  <martin@ximian.com>
17744
17745         * driver.c: Disable copyprop, consprop and inline when running
17746         inside the debugger.
17747
17748 2006-04-25  Martin Baulig  <martin@ximian.com>
17749
17750         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17751         with `get_current_thread' and added `detach'.
17752         (MonoDebuggerMetadataInfo): Added `thread_size',
17753         `thread_tid_offset', `thread_stack_ptr_offset' and
17754         `thread_end_stack_offset'.
17755
17756 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17757
17758         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17759         aot-runtime.c.
17760
17761         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17762         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17763
17764         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17765
17766         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17767
17768         * aot.c: Add support for ADJUSTED_IID.  
17769
17770 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17771
17772         * aot.c (emit_method_order): Don't align method_order_end.
17773
17774         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17775         the interface ID changes.
17776
17777 2006-04-21  Dick Porter  <dick@ximian.com>
17778
17779         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17780         cleaning up a thread.  Fixes the new part of bug 77470.
17781
17782 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17783
17784         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17785         to managed wrapper.
17786                      
17787 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17788
17789         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17790         
17791         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17792         SIGSEGV. Fixes #78072.
17793
17794         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17795         unregister our SIGABRT handler.
17796
17797 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17798
17799         * mini.c: Disabled inline where it can alter the call stack in a
17800         way visible from managed code.
17801         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17802         default.
17803
17804 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17805
17806         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17807         on other platforms. Fixes #78089.
17808
17809 2006-04-13  Martin Baulig  <martin@ximian.com>
17810
17811         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17812         determine whether we're inside the debugger.
17813
17814         * debug-debugger.h
17815         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17816
17817 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17818
17819         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17820         handler clauses. Fixes #78024.
17821
17822         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17823         in the CALL_MEMBASE opcodes. Fixes #78088.
17824         (mono_arch_get_vcall_slot_addr): Ditto.
17825
17826 2006-04-10  Martin Baulig  <martin@ximian.com>
17827
17828         * debug-debugger.c: The thread handling code has now been moved
17829         into ../metadata/threads.c.
17830
17831 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17832
17833         * driver.c (mono_main): Fix --with-gc=none build.
17834
17835         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17836         (mono_spillvar_offset_float): Ditto.
17837         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17838         hreg, not when its !global, since on ia64, there is a third category: stacked
17839         registers.      
17840
17841 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17842
17843         * mini.c: set MonoInst->klass for load field address and a few other
17844         places.
17845
17846 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17847
17848         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17849
17850 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17851
17852         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17853         the branch opt changes.
17854
17855 2006-04-06  Dick Porter  <dick@ximian.com>
17856
17857         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17858         
17859         * wapihandles.c (mini_wapi_seminfo): 
17860         * driver.c (mono_main): Add semaphore info option
17861
17862 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17863
17864         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17865         branch optimization changes. Fixes #78009.
17866
17867 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17868
17869         * mini.c: ignore accessibility of methods in managed->native wrappers.
17870
17871 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17872
17873         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17874         
17875         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17876
17877 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17878
17879         * mini.c: Modify the branch optimizations to preserve the invariant that
17880         the entries inside the in_bb and out_bb arrays are unique.
17881         (mono_unlink_bblock): Avoid creation of new arrays.
17882
17883 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17884
17885         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17886         change (#77992).
17887
17888 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17889
17890         * mini.c (optimize_branches): Remove the "optimizations" in
17891         the cbranch1/cbranch2 -> branch cases which were causing several
17892         problems in the past. Fixes #77986.
17893
17894 2006-03-31  Chris Toshok  <toshok@ximian.com>
17895
17896         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17897         default optimizations :(
17898
17899 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17900
17901         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17902         branch.
17903
17904 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17905
17906         * local-propagation.c: Added comments to structs and removed
17907         "Mono" prefixes from local tree mover types.
17908
17909 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17910
17911         * Makefile.am (arch_sources): Define this for each architecture so 
17912         libmono_la_SOURCES is defined in one place.
17913
17914 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17915
17916         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17917         from handles/.
17918
17919 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17920
17921         * driver.c: print the GC name supplied by configure.
17922
17923 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17924
17925         * local-propagation.c: Added tree mover, and moved here all the
17926         local propagation code from mini.c
17927         * mini.c: Added support for treeprop, and moved all the local
17928         propagation code to local-propagation.c
17929         * mini.h: Added support for treeprop
17930         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17931         treeprop, inline and deadce by default
17932         * Makefile.am: Added local-propagation.c
17933
17934 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17935
17936         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17937
17938 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17939
17940         * debug-debugger.c: make it compile without the Boehm GC.
17941
17942 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17943
17944         * mini.c: fixed issue with mismatch when an icall is registered
17945         with multiple names but same address.
17946
17947 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17948
17949         * declsec.c, mini-exceptions.c: use write barrier to set reference
17950         fields of managed objects.
17951
17952 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17953
17954         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17955         (can_access_internals): Fix a warning.
17956
17957         * mini.c (print_method_from_ip): Rename this to 
17958         mono_print_method_from_ip so it gets exported.
17959
17960         * trace.c: Deal with strings inside StringBuilder's containing garbage
17961         and fix memory leaks. Fixes #77848.
17962
17963 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17964
17965         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17966         fixes #77787.
17967
17968 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17969         
17970         * mini-s390.c: Remove OP_X86_TEST_NULL.
17971
17972 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17973
17974         * mini.c: use the correct GetHashCode() for the moving collector.
17975
17976 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17977
17978         * liveness.c: Regalloc spill cost tuning.
17979
17980 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17981         
17982         * mini-s390x.h: Correct S390_LONG macro.
17983
17984         * mini-s390x.c: Cleanup unused code.
17985
17986 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17987
17988         * jit-icalls.h: New file.
17989
17990         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17991         icalls and include that instead of including jit-icalls.c.
17992
17993         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17994         OP_X86 opcodes.
17995
17996 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17997
17998         * mini.c: when checking for member accessibility, also check for
17999         friend assemblies and for explicit interface implementations.
18000
18001 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
18002
18003         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
18004
18005         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
18006
18007         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
18008         common cases are done first.    
18009
18010         * mini-ops.h: Only define platform specific opcodes on the given platform.
18011
18012         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
18013         branch.
18014         
18015 2006-03-14  Martin Baulig  <martin@ximian.com>
18016
18017         Revert Paolo's change from r57348:
18018
18019         * mini.h: don't use gboolean for bitfields.
18020         * mini.c: verifier changes for fields and methods accessibility.
18021
18022 2006-03-13  Neale Ferguson <neale@sinenomine.net>
18023
18024         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
18025
18026         * mini-s390x.c: Fix conv_r_un.
18027
18028         * cpu-s390, cpu-s390x.md: Fix lengths.
18029
18030 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
18031
18032         * mini.c: nested types have access to all the nesting
18033         levels, not just the enclosing types.
18034
18035 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
18036
18037         * mini.c: added a few more verification checks.
18038
18039 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
18040
18041         * liveness.c: Merge optimizations from the linear-il branch.
18042
18043 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
18044
18045         * mini-ia64.c (emit_call): Add a comment.
18046
18047         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
18048
18049         * tramp-ia64.c: Fix some warnings.
18050
18051 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
18052
18053         * mini.h: don't use gboolean for bitfields.
18054         * mini.c: verifier changes for fields and methods accessibility.
18055
18056 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
18057
18058         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
18059         lazy icall wrapper changes.
18060
18061         * dominators.c: Replace all the dominator algorithms with faster
18062         ones from the linear-il branch.
18063
18064         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
18065         the mempool.
18066
18067         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
18068         common cases are done first.
18069
18070         * mini-amd64.c: Fix some warnings.
18071
18072         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
18073         from the mempool.
18074
18075         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
18076         added code.
18077
18078         * mini.h: Add a missing prototype.
18079
18080 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
18081
18082         * mini.c: Compile icall wrappers lazily.
18083
18084         * mini-codegen.c: Use printf instead of g_print since its much faster.
18085
18086         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
18087         function.
18088
18089         * mini.c (optimize_branches): Cache the negative result from 
18090         remove_block_if_useless ().
18091
18092         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
18093         Also fix some bblock linking issues.
18094
18095         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
18096         assembly files.
18097
18098         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
18099
18100         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
18101         accessed fields first, for better cache behavior.
18102         
18103 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
18104
18105         * mini.c: speedup IList<T> array accesses.
18106
18107 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
18108
18109         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
18110         inline_costs counter. Fixes #77190.
18111
18112 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
18113
18114         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
18115         trace messages. Fixes #77706.
18116
18117 2006-03-04  Martin Baulig  <martin@ximian.com>
18118
18119         * tramp-amd64.c, tramp-x86.c
18120         (mono_debugger_create_notification_function): Use
18121         mono_global_codeman_reserve() to allocate a buffer at runtime and
18122         return it.
18123
18124         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
18125
18126         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
18127         notification function at runtime and then call `initialize' in the
18128         `MONO_DEBUGGER__debugger_info' vtable.
18129
18130 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
18131
18132         * iltests.il: Fix a visibility problem.
18133
18134 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18135
18136         * driver.c, mini.c: add hooks for the counters API.
18137
18138 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
18139
18140         * driver.c: show disabled options.
18141
18142 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18143
18144         * linear-scan.c: always use cost-driven selection.
18145
18146 2006-02-28  Raja R Harinath  <rharinath@novell.com>
18147
18148         * jit-icalls.c (helper_compile_generic_method): Revert change from
18149         2006-02-24.
18150
18151 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
18152
18153         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
18154
18155 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
18156
18157         * inssel.brg: style fixes, mostly to force the updated monoburg
18158         to run for people using svn.
18159
18160 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18161
18162         * mini.c: match monoburg changes.
18163
18164 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18165
18166         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
18167         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
18168         declaration in the header file.
18169
18170 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18171
18172         * helpers.c: reduce relocations and mem usage.
18173
18174 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18175
18176         * mini.h, mini-codegen.c: disable logging features if
18177         requested by configure.
18178
18179 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
18180
18181         * mini.c: tiny verifier changes.
18182
18183 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18184
18185         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18186         cpu-pentium.md: stack alignment changes for osx/x86,
18187         partially from Geoff Norton <gnorton@customerdna.com>.
18188
18189 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18190
18191         * jit-icalls.c (helper_compile_generic_method): Update to changes
18192         in metadata/class.c.
18193
18194 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18195         
18196         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18197         
18198         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18199         interface calls with large offsets.
18200
18201 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18202
18203         * jit-icalls.c (helper_compile_generic_method): Document the
18204         special-case we depend on so that we can inflate the method twice
18205         with the same context with no bad side-effects.
18206
18207 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18208
18209         * mini-x86.c, mini-amd64.c: fix for case when xen support
18210         is disabled.
18211
18212 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18213
18214         * mini-x86.c, mini-amd64.c: generate code to access tls items
18215         in a faster way for Xen systems.
18216
18217 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18218
18219         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18220         updates and compilation fixes for the OSX/x86 port, mostly from
18221         Geoff Norton <gnorton@customerdna.com>.
18222
18223 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18224
18225         * inssel.brg: faster interface call implementation
18226         to sync with the interface_offsets MonoVTable changes.
18227
18228 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18229
18230         * mini.c: more verification checks.
18231
18232 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18233
18234         * mini.c: added a few more verification checks.
18235
18236 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18237
18238         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18239         facility on the processor and use it if available.
18240
18241 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18242
18243         * driver.c, aot.c, mini.c: throw exception if the IL code is
18244         invalid or unverifiable.
18245
18246 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18247
18248         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18249         m.StructField.
18250
18251 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18252
18253         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18254
18255 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18256
18257         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18258         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18259         handling of instantiated generic valuetypes.
18260
18261 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18262
18263         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18264         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18265         instead.
18266
18267         * generics.2.cs: Revert the nullable reftypes tests.
18268
18269 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18270
18271         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18272         using __builtin_frame_address (1) as it doesn't work in the presence
18273         of optimizations. Hopefully fixes #77273.
18274
18275         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18276         -> generics.cs change as it doesn't work with some automake versions.
18277
18278 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18279
18280         * mini.c: handle systems that sue a different way to
18281         retrieve the stack address of the current thread.
18282
18283 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18284
18285         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18286         it specially in the makefile.
18287
18288         * generics.2.cs: Add tests for nullable reference types.
18289
18290 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18291
18292         * mini.c: always handle the case when mono_jit_init()
18293         is called in a thread different from the main thread,
18294         confusing libgc (bug #77309).
18295
18296 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18297
18298         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18299
18300 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18301
18302         * mini.c: change optimize_branches () to use a single loop
18303         and introduce a new optimization to simplify some range checks.
18304
18305 2006-02-03  Martin Baulig  <martin@ximian.com>
18306
18307         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18308         and merged with debugger_thread_manager_add_thread().
18309         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18310         inform the debugger about the main thread.
18311
18312 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18313
18314         * basic.cs: Add test for div.un/rem.un constant folding.
18315
18316 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18317
18318         * cpu-s390x.md: correct int_xor_imm length
18319
18320 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18321
18322         * generics.2.cs: New test for #77442.
18323
18324         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18325         #77442.
18326
18327 2006-02-02  Martin Baulig  <martin@ximian.com>
18328
18329         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18330         <mono/metadata/mono-debug-debugger.h>   
18331
18332         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18333
18334 2006-02-02  Martin Baulig  <martin@ximian.com>
18335
18336         * debug-debugger.h: New header file for debug-debugger.c.
18337
18338         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18339         function is a separate thread anymore; add support for attaching.
18340
18341 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18342
18343         * tramp-x86.c: Fix a warning.
18344
18345 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18346
18347         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18348         on very large methods.
18349
18350         * aot.c (load_patch_info): Fix a warning.
18351
18352 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18353
18354         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18355         mini-ops.h: alu membase optimizations.
18356
18357 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18358
18359         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18360         to speedup StringBuilder.
18361
18362 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18363
18364         * dominators.c (mono_compute_natural_loops): Fix detection of
18365         loop body start blocks.
18366
18367         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18368
18369 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18370
18371         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18372         #75145.
18373
18374 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18375
18376         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18377
18378 2006-01-25  Martin Baulig  <martin@ximian.com>
18379
18380         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18381         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18382         started to cleanup this file a little bit.
18383
18384 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18385
18386         * mini.c: optimize a codepath frequently happening in generics code.
18387
18388 2006-01-23  Martin Baulig  <martin@ximian.com>
18389
18390         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18391
18392         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18393         functions directly.
18394
18395         * driver.c: debug-debugger.c is only available if
18396         `MONO_DEBUGGER_SUPPORTED' is defined.   
18397
18398 2006-01-23  Martin Baulig  <martin@ximian.com>
18399
18400         * debug-debugger.c: Only enable this on platforms where the Mono
18401         Debugger is working (x86 and x86_64).
18402
18403 2006-01-21  Martin Baulig  <martin@ximian.com>
18404
18405         The Mono Debugger is now using the normal `mono' instead of the
18406         `mono-debugger-mini-wrapper' when executing managed code.
18407
18408         * debug-debugger.c: New file; previously known as
18409         debugger/wrapper/wrapper.c.
18410
18411         * debug-mini.c (mono_init_debugger): Removed.
18412
18413         * driver.c (mono_main): Added new `--inside-mdb' command line
18414         argument which is used when running inside the debugger.
18415
18416 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18417
18418         * liveness.c (mono_analyze_liveness): Remove some unused data
18419         structures.
18420
18421 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18422
18423         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18424
18425 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18426
18427         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18428         depends on implementation details of monobitset.
18429
18430         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18431         Fixes #77271.
18432
18433 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18434
18435         * liveness.c: Update after monobitset changes.
18436
18437 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18438
18439         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18440
18441 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18442
18443         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18444
18445         * mini-s390x.c: Remove warning messages.
18446
18447 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18448
18449         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18450
18451 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18452
18453         * generics.2.cs: Add ldelem/stelem_any test.
18454
18455 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18456
18457         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18458
18459 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18460
18461         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18462         
18463 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18464
18465         * generics.2.cs: Reenable vtype tests.
18466
18467         * inssel-x86.brg: Remove an icorrect valuetype rule.
18468
18469 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18470
18471         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18472         initial support for OP_ABS.
18473
18474 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18475
18476         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18477
18478 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18479
18480         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18481         conversion and implement LADD/LSUB.
18482
18483         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18484         architectures.
18485
18486 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18487
18488         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18489
18490         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18491         architectures.
18492
18493 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18494
18495         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18496         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18497         (stack walk problem).
18498
18499 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18500
18501         * aot.c (mono_aot_load_method): Fix a warning.
18502
18503 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18504
18505         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18506
18507 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18508
18509         * iltests.il: Add test for #77148.
18510
18511         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18512         #77148.
18513
18514 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18515
18516         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18517
18518 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18519
18520         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18521         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18522
18523         * basic-long.cs: Add lconv-to-r4/r8 tests.
18524
18525 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18526
18527         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18528
18529         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18530         here as on other archs.
18531
18532 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18533
18534         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18535
18536 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18537
18538         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18539         
18540         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18541
18542         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18543         instrument_prolog; Add memory_barrier instruction.
18544
18545 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18546
18547         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18548
18549 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18550
18551         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18552
18553         * aliasing.c inssel.brg: Fix warnings.
18554
18555         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18556         could skip initialization of some parts of memory.
18557
18558         * mini.c mini-ia64.c: Fix warnings.
18559
18560         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18561
18562 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18563
18564         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18565         a crash seen on sparc.
18566
18567         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18568         
18569         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18570
18571 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18572
18573         * mini-ops.h: Add s390_backchain instruction
18574
18575         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18576
18577         * cpu-s390.md: Add s390_backchain instruction
18578
18579         * mini-s390.c: Significant ABI changes
18580
18581         * mini-s390.h: Cater for zero length structures
18582
18583 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18584
18585         * mini-s390.c: ABI fixes
18586
18587         * inssel-s390.brg: Remove debug statements
18588
18589         * cpu-s390.md: Fix length of ATOMIC_xx operations
18590
18591 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18592
18593         * basic-float.cs: Add float<->long conversion tests.
18594
18595 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18596
18597         * mini-s390.c: Fix LOCALLOC processing.
18598
18599         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18600
18601 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18602
18603         * iltests.il: Add tests for some opcodes not covered by the other
18604         tests.
18605
18606 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18607
18608         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18609         register loading for Tail processing; Correct trace output.
18610
18611         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18612
18613         * cpu-s390.md: Correct size of jmp instruction. 
18614
18615 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18616
18617         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18618
18619 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18620
18621         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18622           Bring s390 up to current level.
18623
18624 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18625
18626         * generics.2.cs: Disable the newly added tests as they do not work yet.
18627         
18628         * generics.2.cs: Add valuetype tests.
18629
18630 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18631
18632         * basic-long.cs: Add i4->u8 test.
18633
18634         * objects.cs: Add tests for JIT intrinsic.
18635
18636         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18637         optimizations lost by a mistake.
18638
18639 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18640
18641         * basic-long.cs: Remove a test moved to objects.cs.
18642
18643         * arrays.cs: Add more array tests.
18644
18645 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18646
18647         * arrays.cs: Add new tests for multi-dimensional arrays.
18648
18649 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18650
18651         * Makefile.am (test_sources2): Add generics.2.cs.
18652         (EXTRA_DIST): Add test_sources2.
18653
18654 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18655
18656         Support for boxing and unboxing nullable types as well as the
18657         isinst operation on nullables, per the CLI ammendment.
18658
18659         * inssel.brg (CEE_ISINST): Special case for nullable
18660
18661         * mini.c (handle_unbox_nullable): new method
18662         (handle_box): Special case for nullable types
18663         (mono_method_to_ir): Call handle_unbox_nullable in correct
18664         places.
18665
18666         * generics.2.cs: New test suite
18667
18668         * Makefile.am: Support for regression tests with generics.
18669
18670 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18671
18672         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18673         allocated to registers. Fixes #76800.
18674
18675 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18676
18677         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18678
18679 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18680
18681         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18682         of platforms.
18683
18684 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18685
18686         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18687         objects.cs.
18688
18689         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18690         
18691         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18692 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18693
18694         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18695         single precision before storing to a single precision location.
18696
18697 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18698
18699         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18700
18701 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18702
18703         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18704         correct files.
18705
18706         * basic.cs: Remove test_0_byte_compares test which was moved to
18707         objects.cs a long time ago.
18708
18709 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18710
18711         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18712
18713 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18714
18715         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18716         handlers are called.
18717
18718         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18719         throwing code.
18720
18721          * mini-ia64.c: Add support for the throw->branch exception 
18722         optimization.   
18723
18724         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18725
18726 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18727
18728         * mini.c: Enabled "fastpath" deadce :-)
18729         
18730 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18731
18732         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18733         alias analysis pass to support it.
18734         * mini.h: Likewise.
18735         * ssa.c: Likewise.
18736         * liveness.c: Likewise (liveness computation can use aliasing
18737         information to be more accurate).
18738         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18739         moreover made so that "--compile-all" uses the given optimization
18740         flags and not the default ones.
18741         * aliasing.c: Alias analysis (new file).
18742         * aliasing.h: Likewise.
18743         * Makefile.am: added "aliasing.c" and "aliasing.h".
18744         
18745 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18746
18747         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18748         OP_L opcodes.
18749
18750 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18751
18752         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18753         fp >= end_of_stack exit condition, as it is not needed, and it might
18754         become true for fp eliminated frames.
18755
18756 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18757
18758         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18759         coded offsets.
18760
18761 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18762
18763         * mini-arm.c: fixed alignment of doubles/longs to match
18764         the C ABI (bug #76635).
18765
18766 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18767
18768         * aot.c: fix compilation with --enable-minimal=aot.
18769
18770 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18771
18772         * mini-arm.c: fixed compatibility with the new
18773         floating point emulator package for compares.
18774
18775 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18776
18777         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18778
18779 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18780
18781         * mini-exceptions.c (print_stack_frame): Output to stderr.
18782         (mono_handle_native_sigsegv): Ditto.
18783
18784 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18785
18786         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18787         OP_LCONV_TO_OVF_I implementation.
18788
18789         * mini-amd64.c: Add support for the throw->branch exception 
18790         optimization.
18791
18792         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18793         when the catch clause catches a more general exception, i.e. Object.
18794
18795 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18796
18797         * cpu-ia64.md: Remove unused opcodes.
18798
18799         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18800         specific defines for architectures defining USE_SIGACTION.
18801
18802         * mini-ia64.c: Fix some warnings.
18803
18804         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18805         version seemed to skip a frame.
18806
18807 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18808
18809         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18810         only calls which are made to native code use this flag.
18811
18812 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18813
18814         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18815         varargs methods as well.
18816         
18817         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18818         which have save_lmf set. Reorganize methods prologs a bit.
18819
18820         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18821         debugger to the proper place.
18822
18823 2005-10-29  Martin Baulig  <martin@ximian.com>
18824
18825         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18826         when running inside the debugger until the debugger has support
18827         for it.
18828
18829 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18830
18831         * mini.h: Fix a warning.
18832
18833 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18834
18835         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18836         we expose publicly, this returns the string.
18837
18838 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18839
18840         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18841         with fp elimination.
18842
18843 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18844
18845         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18846         native stacktrace using the glibc 'backtrace' function if available.
18847
18848 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18849
18850         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18851
18852         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18853         handle SIGSEGVs received while in native code.
18854
18855         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18856         code, call mono_handle_native_sigsegv which will abort the runtime
18857         after printing some diagnostics, instead of converting it into a
18858         confusing NullReferenceException.
18859
18860 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18861
18862         * cpu-pentium.md: Remove unused opcodes.
18863
18864 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18865
18866         * mini-amd64.h (MonoLMF): Add rsp field.
18867
18868         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18869         the lmf too.
18870
18871 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18872
18873         * mini-codegen.c (get_register_spilling): Fix some warnings.
18874
18875 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18876
18877         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18878         elimination during exception handling. Enable fp elimination by
18879         default.
18880
18881         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18882         elimination.
18883
18884 2005-10-16  Martin Baulig  <martin@ximian.com>
18885
18886         * mini-exceptions.c
18887         (mono_debugger_run_finally): New public method for the debugger.
18888
18889 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18890
18891         * debug-mini.c (mono_debug_init_method): Fix warning.
18892
18893         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18894         the 'exname' parameter const to fix some warnings.
18895
18896 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18897
18898         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18899         introduced by the previous patch.
18900
18901 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18902
18903         * basic-float.cs: Add test for precision of float arithmetic.
18904
18905         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18906         when loading/storing single values from/to memory.
18907
18908         * mini.c (mono_jit_compile_method_with_opt): Create the function
18909         pointers in the correct domain.
18910
18911 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18912
18913         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18914         introduced by previous patch.
18915         
18916         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18917         when out_filter_idx is NULL.
18918
18919         * mini-exceptions.c: Don't run filter clauses twice during exception
18920         handling. Fixes #75755.
18921
18922 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18923
18924         * aot.c: Add support for ldflda wrappers.
18925
18926         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18927         #75902.
18928
18929 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18930
18931         * mini.c, mini.h: do not consider exception handlers blocks when
18932         setting up interface variables.
18933
18934 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18935
18936         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18937
18938 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18939
18940         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18941         causes a regression.
18942
18943         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18944
18945 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18946
18947         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18948         of the OP_P definitions.
18949
18950         * TODO: Add a proposal for dealing with the CEE/OP mess.
18951
18952         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18953         optimizations from the x86 port.
18954
18955         * cpu-amd64.md: Ditto.
18956
18957         * basic.cs basic-long.cs: Add tests.
18958
18959 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18960
18961         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18962         Patrik Torstensson's implementation of my exception-handling
18963         optimization idea, when the exception object is not used
18964         (bug #62150).
18965
18966 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18967
18968         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18969         of the mul_imm optimizations from the old jit.
18970
18971 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18972
18973         * mini.c, liveness.c: patch by Patrik Torstensson and
18974         Zoltan Varga to improve performance in methods with
18975         exception clauses.
18976
18977 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18978
18979         * driver.c: Remove 'Globalization' entry from --version.
18980
18981 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18982
18983         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18984         there is a profiler interested in JIT events.
18985
18986         * aot.c: Load profile files produced by the AOT profiling module, and
18987         reorder methods based on the profiling info. Add a 'method_order' table
18988         to the AOT file to make mono_aot_find_jit_info work with the reordered
18989         methods.
18990
18991         * mini.h: Bump AOT file version info.
18992
18993 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18994
18995         * mini-arm.h: work around what looks like a gcc bug when optimizations
18996         are enabled.
18997
18998 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18999
19000         * Makefile.am (AM_CFLAGS): Don't use += to append inside
19001         conditionals.  Use ...
19002         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
19003
19004 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
19005
19006         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
19007         to determine the amount of memory to copy when passing valuetypes.
19008
19009         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
19010         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
19011
19012 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
19013
19014         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
19015         information about aot.
19016
19017 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
19018
19019         * *.c: Replace the use of {Enter,Leave}CriticalSection with
19020         macros. This will allow a deadlock debugger to easily be plugged
19021         in.
19022
19023 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
19024
19025         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
19026
19027 2005-09-27  Raja R Harinath  <rharinath@novell.com>
19028
19029         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
19030         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
19031         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
19032         ($(arch_built)) [CROSS_COMPILING]: Error out.
19033
19034 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
19035
19036         * aot.c: Add support for the no_special_static flag for classes.
19037
19038 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
19039
19040         * Reapply reverted patches.
19041
19042         * *: Revert r50174 as well.
19043
19044         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
19045
19046 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
19047
19048         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
19049
19050 2005-09-23  Miguel de Icaza  <miguel@novell.com>
19051
19052         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
19053         part of the SIG_HANDLER_SIGNATURE.  
19054
19055 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
19056
19057         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
19058         statistics.
19059
19060         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
19061         introduced by previous patch.
19062
19063 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
19064
19065         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
19066         saved registers too.
19067
19068         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
19069         upon the information returned by get_call_info ().
19070         
19071         * mini-x86.c (add_float): Fix stack size calculation.
19072         (mono_arch_call_opcode): Rewrite this so it works based up the
19073         information returned by get_call_info ().
19074         (mono_arch_get_this_vret_args): Ditto.
19075
19076 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
19077
19078         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
19079         in cinfo to determine the registers which need to be used.
19080
19081 2005-09-20  Miguel de Icaza  <miguel@novell.com>
19082
19083         * driver.c (mono_main): Add --server and --desktop flags. 
19084
19085 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
19086
19087         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
19088         registers as global registers.
19089
19090         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
19091         longer needed with the new register allocator.
19092
19093         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
19094
19095         * cpu-ia64.md: Remove unused opcodes.
19096         
19097         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
19098         
19099 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
19100
19101         * cpu-amd64.md: Remove unused opcodes.
19102
19103         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
19104         needed with the new register allocator.
19105
19106         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
19107         reg-reg moves.
19108
19109 2005-09-16  Raja R Harinath  <rharinath@novell.com>
19110
19111         * Makefile.am (check-local): Don't invoke semdel-wrapper.
19112
19113 2005-09-16  Martin Baulig  <martin@ximian.com>
19114
19115         * exceptions-amd64.c
19116         (throw_exception): Don't call mono_debugger_throw_exception() if
19117         we're a rethrow - see the FIXME in the code.
19118
19119 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
19120
19121         * mini.c (mono_init_exceptions): This only works on some architectures.
19122         
19123 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19124
19125         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
19126         on ia64.
19127
19128         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
19129
19130         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
19131         now in mini-exceptions.c.
19132
19133 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
19134
19135         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
19136         now in mini-exceptions.c.
19137
19138 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19139
19140         * exceptions-x86.c: Applied patch from Patrik Torstensson 
19141         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
19142
19143         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
19144         code into mini-exceptions.c. Add some assertions to it.
19145
19146 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
19147
19148         * aot.c (emit_section_change): Applied patch from "The Software Team" 
19149         (<software@solmersa.com>). Fix as errors on windows.
19150
19151 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19152
19153         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
19154         method info into the LMF.
19155
19156 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19157         
19158         * mini-ia64.c: Add proper unwind info for method epilogs.
19159
19160         * exceptions-ia64.c: Add some code to help debugging.
19161         
19162         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
19163
19164         * mini-exceptions.c: Fix warning.
19165
19166 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19167
19168         * mini.c: Really fix build.
19169
19170         * mini-x86.c mini-amd64.c: Fix build.
19171
19172 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19173
19174         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
19175
19176         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
19177         some Interlocked methods as intrinsics.
19178
19179         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
19180         for Thread methods as well.
19181
19182         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19183
19184         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19185
19186         * mini-ia64.c mini-x86.c mini-amd64.c 
19187         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19188         OP_MEMORY_BARRIER.
19189         
19190         * mini.c (mono_init_exceptions): Fix build breakage.
19191
19192 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19193
19194         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19195         of instructions. Use the new ia64_unw_op macros for emitting unwind
19196         info.
19197
19198         * mini.c (mono_init_exceptions): Initialize exception handling
19199         related trampolines at startup.
19200
19201 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19202
19203         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19204
19205 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19206
19207         * mini.c: Handle type loading errors gracefully during compilation and
19208         throw the appropriate exception.
19209
19210 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19211
19212         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19213         for the mono binary.
19214
19215 2005-09-09  Martin Baulig  <martin@ximian.com>
19216
19217         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19218         the release.
19219
19220 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19221
19222         * mini-arm.h: use emulation for conv.r.un for the release.
19223
19224 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19225
19226         * mini-arm.c, objects.cs: more fixes and tests for them.
19227
19228 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19229
19230         * mini-arm.c: align structures to at least 4 bytes to be able
19231         to keep our current optimized memcpy.
19232
19233 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19234
19235         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19236
19237 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19238
19239         * mini.c: ignore SIGPIPE.
19240
19241 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19242
19243         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19244
19245         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19246
19247 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19248
19249         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19250
19251 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19252
19253         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19254         exception handling support.
19255         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19256         patch by Brian Koropoff <briank@marakicorp.com>).
19257
19258 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19259
19260         * mini.c: revert another 'optimization' which breaks when
19261         items on the eval stack need to be saved at a basic block end
19262         (bug #75940).
19263
19264 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19265
19266         * jit-icalls.c: for arrays, ensure we always provide
19267         lower bounds.
19268
19269 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19270
19271         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19272         
19273         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19274
19275 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19276
19277         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19278         arguments in their original register.
19279
19280 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19281
19282         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19283         memset/memcpy.
19284
19285         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19286         when ssapre is enabled.
19287
19288         * inssel-long.brg: Fix bug in previous patch.
19289
19290         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19291         multiplication by a constant.
19292
19293 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19294
19295         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19296         icc.
19297
19298         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19299         saving registers.
19300
19301 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19302
19303         * inssel-arm.brg: apply changes tested by Brian Koropoff
19304         <briank@marakicorp.com>.
19305
19306 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19307
19308         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19309         
19310 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19311
19312         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19313         to the same register if dreg is just a base register.
19314         (print_ins): Improve printing of membase opcodes.
19315
19316         * inssel-x86.brg: Add optimized ldind(reg) rules.
19317
19318         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19319
19320 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19321
19322         * mini.c: when running under valgrind, set the stack bottom for
19323         the GC at the actual approximate stack for the app (fixes running
19324         mono with valgrind).
19325
19326 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19327
19328         * mini.c: do no break at the first valuetype to init found
19329         (fixes bug #75791).
19330
19331 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19332
19333         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19334
19335 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19336
19337         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19338
19339 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19340
19341         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19342
19343 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19344
19345         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19346
19347         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19348         code.
19349
19350         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19351         code.
19352
19353         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19354         methods.
19355
19356 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19357
19358         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19359
19360 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19361
19362         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19363         in the tail recursion optimization.
19364
19365         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19366         debug info into the assembly file.
19367
19368         * iltests.il: Add test for filter regions.
19369
19370         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19371         initial stack of filter regions. Fixes #75755.
19372
19373 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19374
19375         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19376         stack requirements.
19377
19378 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19379
19380         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19381         the check for an already compiled method on non-ia64 platforms.
19382         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19383         proper domain.
19384
19385         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19386
19387         * inssel-x86.brg: Add some optimized call rules.
19388
19389 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19390
19391         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19392         method here.
19393
19394         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19395         mono_arch_patch_delegate_trampoline.
19396
19397         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19398
19399         * mini-trampolines.c: Fix build.
19400
19401         * mini-amd64.h: Add delegate trampolines.
19402
19403         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19404
19405         * inssel-amd64.brg: Add optimized call rules.
19406         
19407         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19408
19409         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19410
19411 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19412
19413         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19414         change.
19415
19416         * mini-ia64.c: Remove LMF fixmes.
19417
19418         * mini-ia64.h: Remove most fields from LMF.
19419
19420         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19421
19422         * mini-trampolines.c: Add support for IA64 function descriptors.
19423
19424         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19425         for IA64 function descriptors.
19426
19427 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19428
19429         * tramp-arm.c: patch the vtable for virtual calls. Added
19430         support code to register/unregister the LMF.
19431         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19432         more LMF work.
19433
19434 2005-08-19  Dick Porter  <dick@ximian.com>
19435
19436         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19437         bit value if needed.
19438
19439 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19440
19441         * mini.c (mini_get_method): Move handling of wrapper data here.
19442
19443         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19444
19445         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19446         virtual.
19447
19448         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19449         bblock->code does not remain empty.
19450
19451 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19452
19453         * arrays.cs: Add regression test for #75832.
19454
19455         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19456         rules. Fixes #75832.
19457
19458         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19459         instruction scheduling.
19460
19461 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19462
19463         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19464
19465 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19466
19467         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19468
19469         * mini-codegen.c: Fix VC build.
19470
19471         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19472
19473 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19474
19475         * mini.h: fix signature for mono_register_opcode_emulation.
19476
19477 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19478
19479         * mini.c: Get rid of most of the helper_sig_... constants using
19480         mono_create_icall_signature ().
19481
19482 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19483
19484         * jit-icalls.c (helper_ldstr): New helper function.
19485
19486         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19487
19488         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19489         throw, load the string using a helper call instead of creating a string object.
19490
19491         * aot.c: Update after LDSTR changes.
19492
19493         * mini.h: Bump AOT file version.
19494         
19495         * aot.c: Save class size info into the AOT file. Print more statistics during
19496         compilation.
19497
19498         * mini.h: Bump AOT file version.
19499
19500         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19501         ordering of disasm cases. Fixes #74957.
19502
19503 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19504
19505         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19506         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19507         the generic code needed for the ARM port.
19508
19509 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19510
19511         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19512         inssel-arm.brg: more ARM features and fixes.
19513
19514 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19515
19516         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19517         ARM port work in progress.
19518
19519 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19520
19521         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19522
19523         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19524
19525         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19526
19527         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19528
19529         * *-ia64.*: Ongoing IA64 work.
19530         
19531         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19532
19533 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19534
19535         * TODO: Remove out-of-data todo stuff.
19536
19537         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19538         dead code.
19539
19540         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19541
19542         * mini.h: Bump corlib version.
19543
19544 2005-07-27  Martin Baulig  <martin@ximian.com>
19545
19546         * mini-codegen.c
19547         (create_copy_ins): Added `const unsigned char *ip' argument; set
19548         `copy->cil_code' from it.
19549
19550 2005-07-27  Martin Baulig  <martin@ximian.com>
19551
19552         * mini-exceptions.c (mono_handle_exception): Don't call
19553         mono_debugger_handle_exception() for filters.
19554
19555 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19556
19557         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19558         as well.
19559
19560 2005-07-26  Martin Baulig  <martin@ximian.com>
19561
19562         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19563
19564         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19565         helper_compile_generic_method() if the method is actually virtual
19566         and non-final.
19567
19568 2005-07-26  Martin Baulig  <martin@ximian.com>
19569
19570         * mini.c
19571         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19572         public; this is now accessed directly by the debugger.
19573         (mono_generic_trampoline_code): Removed.
19574
19575         * debug-mini.c
19576         (mono_debug_init_method): Also add interncalls and wrappers.
19577
19578 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19579
19580         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19581
19582 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19583
19584         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19585
19586 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19587
19588         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19589
19590 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19591
19592         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19593         getting TLS offsets on AMD64 too.
19594
19595 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19596
19597         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19598
19599 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19600
19601         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19602         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19603
19604 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19605
19606         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19607
19608         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19609         to mini.c.
19610
19611         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19612         mono_sparc_is_virtual_call ().
19613         
19614         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19615
19616         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19617         trampoline parameters.
19618
19619         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19620         
19621         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19622         to mono_arch_get_vcall_slot_addr.
19623
19624         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19625         trampoline code.
19626
19627         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19628
19629 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19630
19631         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19632
19633 2005-07-19  Martin Baulig  <martin@ximian.com>
19634
19635         * exceptions-amd64.c (throw_exception): Call
19636         mono_debugger_throw_exception() here like we're doing it on i386.
19637
19638 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19639
19640         * mini-ia64.c: Add optimized TLS access support.
19641
19642 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19643
19644         * mini-exceptions.c: Ongoing IA64 work.
19645
19646         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19647
19648         * mini.c: Use the default optimization set when embedding. Fixes
19649         #75194.
19650
19651 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19652
19653         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19654         of trampolines to a separate file.
19655
19656         * mini-trampolines.c: New file.
19657
19658         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19659         separate file.
19660         
19661         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19662         amd64/ia64 code.
19663
19664         * mini-codegen.c: Fix cygwin build.
19665
19666 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19667
19668         * mini.c: Add some minor changes needed by the IA64 port.
19669
19670         * *-ia64.*: Ongoing IA64 work.
19671
19672 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19673
19674         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19675         trampolines into arch-independent and arch-dependent parts.
19676
19677         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19678
19679 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19680
19681         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19682
19683         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19684         the xp-regalloc-branch for amd64.
19685
19686         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19687         xp-regalloc-branch for x86.
19688
19689 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19690
19691         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19692
19693 2005-07-06  Martin Baulig  <martin@ximian.com>
19694
19695         * mini.c
19696         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19697         (mono_jit_runtime_invoke): Likewise.
19698
19699 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19700
19701         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19702         on x86 too.
19703         
19704         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19705         without loading their metadata. Reorganize the file format so exception handling+
19706         debug info is kept separate from normal method info. Create MonoJitInfo 
19707         structures for methods lazily.
19708
19709         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19710         loading metadata.
19711         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19712
19713         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19714
19715         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19716         in AOT code.
19717
19718         * mini.h: Bump AOT file version.
19719
19720 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19721
19722         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19723
19724 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19725
19726         * Makefile.am (check-local): Call semdel-wrapper.
19727
19728 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19729
19730         * mini-x86.c: Revert the last change as it seems to break the build..
19731
19732 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19733
19734         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19735         
19736         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19737
19738 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19739
19740         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19741         outside of the macro, so strange stuff doesn't happen with gcc4
19742         (NEW_AOTCONST_TOKEN): Likewise.
19743
19744 2005-06-28  Martin Baulig  <martin@ximian.com>
19745
19746         * mini.c (mini_class_is_system_array): New static method; use this
19747         instead of `klass->parent == mono_defaults.array_class' everywhere
19748         since this also works for the new generic array class.
19749
19750 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19751
19752         * inssel.brg: Remove warnings.
19753
19754 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19755
19756         * mini-ia64.c: Ongoing IA64 work.
19757
19758         * basic-float.cs: Add float->i1 conversion test.
19759
19760         * iltests.il: Add conv.u4 test.
19761
19762 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19763
19764         * inssel-long.brg: Fix bug caused by last change.
19765
19766 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19767
19768         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19769         BSDs.  Allows the x86 JIT to work on OSX86
19770
19771 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19772
19773         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19774         u4->i8 conversion.
19775
19776         * mini-ia64.c: Ongoing IA64 work.
19777
19778 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19779
19780         * mini-ia64.c: Ongoing IA64 work.
19781
19782         * driver.c: Clean up jit_code_hash as well when using --regression.
19783
19784         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19785
19786         * basic-long.cs: Add tests for long->u4 conversion.
19787
19788 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19789
19790         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19791         that we do not depend on undefined C behavior: the order stuff
19792         gets evaluated within an expression. Fixes mono when compiled on
19793         GCC 4.
19794
19795 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19796
19797         * *-ia64.*: Ongoing IA64 work.
19798
19799         * aot.c: Lower memory usage while loading AOT methods.
19800
19801         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19802
19803         * mini.h: Bump AOT file format version.
19804
19805 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19806
19807         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19808
19809 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19810
19811         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19812         not on callee assembly). Fixed some comments.
19813
19814 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19815
19816         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19817         it gets proper disassembly.
19818         (emit_method_info): Remove some dead code.
19819
19820         * mini.c (mini_method_compile): Allways allocate the GOT var in
19821         mono_method_to_ir for emulating opcodes.
19822
19823 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19824
19825         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19826         before freeing the code memory. Fixes #74990.
19827
19828         * objects.cs: Add regression test for #74992.
19829
19830         * liveness.c: Extend live ranges of arguments to the beginning of the
19831         method. Fixes #74992.
19832
19833         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19834         so it points into the faulting instruction.
19835
19836 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19837
19838         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19839
19840         * *-ia64.*: Ongoing IA64 work.
19841
19842         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19843
19844 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19845
19846         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19847
19848         * *-ia64.*: Ongoing IA64 work.
19849
19850 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19851
19852         * basic-long.cs: Add tests for add/sub.ovf.
19853
19854         * basic.cs: Add tests for sub.ovf.
19855
19856         * *-ia64.*: Ongoing IA64 work.
19857
19858 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19859
19860         * *-ia64.*: Ongoing IA64 work.
19861
19862         * basic.cs: Add conv.ovf.i4.un test.
19863
19864 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19865
19866         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19867         
19868 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19869
19870         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19871
19872 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19873
19874         * *-ia64.*: Ongoing IA64 work.
19875
19876 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19877
19878         * trace.[ch]:
19879         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19880
19881 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19882
19883         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19884
19885 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19886
19887         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19888
19889         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19890         of a call is callable by a near call.
19891
19892 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19893
19894         * mini-ia64.c: Ongoing IA64 work.
19895
19896 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19897
19898         * genmdesc.c: Make the generated array non-static.
19899
19900         * inssel-long.brg: Fix LSHR_IMM rule.
19901
19902         * *-ia64.*: Ongoing IA64 work.
19903
19904         * *-ia64.*: Ongoing IA64 work.
19905
19906 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19907
19908         * *-ia64.*: Ongoing IA64 work.
19909
19910         * *-ia64.*: Ongoing IA64 work.
19911         
19912         * mini-ia64.c: Ongoing IA64 work.
19913
19914         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19915
19916 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19917
19918         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19919         
19920         * objects.cs basic-long.cs: Move some tests to objects.cs.
19921
19922 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19923
19924         * *-ia64.*: Ongoing IA64 work.
19925
19926         * iltests.il: Add a new test.
19927
19928         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19929         newobj. Fixes #75042.
19930
19931 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19932
19933         * *-ia64.*: Ongoing IA64 work.
19934         
19935         * *-ia64.*: Ongoing IA64 work.
19936         
19937         * *-ia64.*: Ongoing IA64 work.
19938
19939         * basic.cs objects.cs: Move tests accessing static variables as well.
19940
19941         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19942
19943 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19944
19945         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19946
19947         * driver.c: Always print failed tests.
19948
19949         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19950         frame pointer.
19951
19952         * *ia64*: Ongoing IA64 work.
19953
19954 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19955
19956         * basic.cs: Add tests for add.ovf. Fix warnings.
19957
19958 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19959
19960         * driver.c (mono_main): Avoid crash if no argument is passed to
19961         --break;  Do not use g_error, but f_printf.   And fix all other
19962         ocurrences of the same crash.
19963
19964 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19965
19966         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19967         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19968         Fixes #74742.
19969
19970 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19971
19972         * *-ia64.*: Add beginnings of IA64 backend.
19973
19974         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19975
19976 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19977
19978         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19979         Fixes #74925.
19980
19981         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19982
19983         * mini-amd64.c: Fix a warning.
19984
19985 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19986
19987         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19988         in float_neg. Fixes #74897.
19989
19990         * mini-amd64.c (emit_call): Fix another near call bug.
19991
19992 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19993
19994         * declsec.c: Keep the appdomain information in the structure. Added a 
19995         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19996         value gets overwritten).
19997         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19998         an MonoAppDomain member to MonoSecurityFrame.
19999         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
20000         used in the stack walk. Now use a MonoArray which grow (double) when
20001         it gets full.
20002
20003 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
20004
20005         * mini.c: Re-enabled runtime cleanup, since running threads should
20006         now properly stop when exiting.
20007
20008 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
20009
20010         * mini-codegen.c: New file contaning the arch-independent local
20011         register allocator. Not used by any architectures yet.
20012
20013         * mini.h linear-scan.c: Merge some changes from the 
20014         mini-xp-local-regalloc branch.
20015
20016 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
20017
20018         * mini-amd64.c (emit_call): Fix calls to native functions when the
20019         runtime is compiled as a shared library. Fixes #74756.
20020
20021         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
20022         on a literal field. Fixes #74751.
20023
20024 2005-04-25  Raja R Harinath  <rharinath@novell.com>
20025
20026         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
20027
20028 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
20029
20030         * objects.cs: Add missing null casting test.
20031
20032 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
20033
20034         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
20035         in wrapper methods. Also rename 'address' variable to 'offset'.
20036
20037 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
20038
20039         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
20040         warnings.
20041         
20042         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
20043
20044         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
20045         work on windows.
20046
20047 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
20048
20049         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
20050
20051 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
20052
20053         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
20054         just the last bytes.
20055
20056 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
20057
20058         * aot.c (mono_compile_assembly): Fix warning.
20059
20060         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
20061         by the _MSC_VER stuff.
20062
20063 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
20064
20065         * inssel-long.brg: Fix #74588.
20066
20067         * cpu-amd64.md: Fix #74591.
20068
20069         * iltests.il: Add new regression tests.
20070
20071 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
20072
20073         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
20074         valuetype.
20075
20076 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
20077
20078         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
20079
20080         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
20081         from Bill Middleton <flashdict@gmail.com>.
20082
20083 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
20084
20085         * arrays.cs: Add new regression test. Fix warnings.
20086
20087 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
20088
20089         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
20090         and leakage in CKFINITE.
20091
20092         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
20093         this to a null op since it is called on amd64 too.
20094
20095         * exceptions-amd64.c (get_throw_trampoline): Align stack.
20096
20097         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
20098         body since this is not used on amd64.
20099         
20100         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
20101
20102         * mini-amd64.c: Remove obsolete fixmes.
20103
20104         * mini.c (print_method_from_ip): Fix debugging support.
20105
20106 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20107
20108         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
20109         so that expressions that don't give much gain are not reduced.
20110         * ssapre.h: Likewise.
20111
20112 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
20113
20114         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
20115
20116         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
20117
20118         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
20119
20120 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
20121
20122         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
20123
20124         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
20125
20126 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
20127
20128         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
20129         stack touching.
20130
20131         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
20132
20133         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
20134
20135         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
20136
20137         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
20138         MONO_ARCH_USE_SIGACTION. Fixes #74252.
20139
20140         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
20141
20142         * mini-x86.c: Fix up stack overflow handling.   
20143
20144         * exceptions.cs: Add new regression test.
20145
20146 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
20147
20148         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
20149         mono_jit_thread_attach.
20150
20151         * mini.c (mono_method_to_ir): Verify called method is not abstract.
20152
20153 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20154
20155         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
20156         avoid calling constructors using callvirt.
20157
20158         * inssel.brg: Fix #74073.
20159
20160 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
20161
20162         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
20163         compilation with non-GCC compilers.
20164         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
20165         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
20166
20167 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
20168
20169         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
20170         klass->interface_offsets (will likely fix bug#74073).
20171
20172 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20173
20174         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
20175
20176 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
20177
20178         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
20179         to amd64_div_reg_size ().
20180         
20181         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
20182
20183 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20184
20185         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20186
20187 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20188
20189         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20190
20191 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20192
20193         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20194         
20195         * mini.c (mono_precompile_assembly): Load and precompile referenced
20196         assemblies as well. Fixes #74015.
20197
20198 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20199
20200         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20201
20202 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20203
20204         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20205         a lot of checks and (anyway) permissions cannot work until corlib is 
20206         loaded.
20207
20208 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20209
20210         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20211
20212 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20213
20214         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20215         calls (fixes bug#72824).
20216
20217 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20218
20219         * mini.c: fix tail recursion elimination (see test in bug#73936).
20220
20221 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20222
20223         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20224         some fp functions in sse2 mode.
20225
20226 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20227
20228         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20229
20230 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20231
20232         * mini.h mini.c: Add mono_get_jit_tls_key ().
20233
20234         * mini-x86.c: Enable fast TLS support on windows.
20235
20236 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20237
20238         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20239         * mini.c: Check for p/invoke method when generating code. If a
20240         p/invoke method, or it's class, isn't decorated with [Suppress
20241         UnmanagedCodeSecurity] then generate code to call System.Security.
20242         UnmanagedDemand (only if the security manager is active).
20243
20244 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20245
20246         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20247         last change as it seems to cause strange crashes.
20248         
20249 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20250
20251         * *.c: handle unsafe function pointers where needed.
20252
20253 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20254
20255         * mini.c (mono_jit_free_method): Remove the fixme too.
20256
20257 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20258
20259         * mini.c: As discussed, make the code actually free the delegate
20260         thunk now, to enable the debugging of delegate problems, use
20261         MONO_DEBUG=1 when running Mono. 
20262
20263         This takes also care of parts of the leaks as seen by Joe.
20264
20265 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20266
20267         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20268         thread_tls_offset calculation.
20269
20270 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20271
20272         * declsec.c: Reworked linkdemand checks for icall. The previous code
20273         was using the declaration code (untrusted) and didn't work as expected
20274         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20275         specific case.
20276
20277 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20278
20279         * iltests.il: Add new localloc test.
20280
20281         * mini-amd64.c: Handle large stack allocations the same way as on
20282         windows if stack overflow handling is working.
20283         
20284         * mini-amd64.c: Allocate the signal stack using mmap.
20285
20286         * mini.c (sigsegv_signal_handler): Fix reading of context.
20287
20288         * mini-exceptions.c: Fix up stack overflow handling.
20289
20290         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20291
20292         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20293
20294         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20295
20296         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20297
20298         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20299         tramp_init functions as they are no longer needed.
20300
20301 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20302
20303         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20304         
20305         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20306
20307         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20308         
20309         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20310         support that now.
20311
20312         * mini-ops.h: Add OP_LMUL_IMM.
20313
20314         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20315         long mul/div opcodes as intrinsic.
20316
20317         * mini-amd64.c (emit_call): Handle the case when the callee might be
20318         an AOT method.
20319
20320 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20321
20322         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20323         extra safe.
20324         
20325         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20326
20327         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20328
20329 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20330
20331         * mini.c (mono_codegen): Don't leak here, to help people running
20332         monogrind.
20333
20334 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20335
20336         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20337         conversions in sse2 mode.
20338
20339         * basic-float.cs: Add regression test.
20340         
20341         * mini-amd64.c: Reenable sse2.
20342
20343 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20344
20345         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20346
20347 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20348
20349         * driver.c: Copyright text should include 2005.
20350         
20351 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20352
20353         * cpu-amd64.md (load_membase): Fix more max lengths.
20354
20355 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20356
20357         * cpu-amd64.md (load_membase): Fix max length.
20358
20359         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20360
20361         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20362
20363         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20364         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20365
20366         * basic-float.cs: Add rounding regression test.
20367
20368         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20369
20370 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20371
20372         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20373         structures in registers for pinvoke wrappers.
20374
20375 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20376
20377         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20378
20379 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20380
20381         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20382         wrapper to mono_jit_thread_attach.
20383
20384         * mini.c (mini_jit_thread_attach): New jit icall.
20385
20386         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20387         native->managed wrappers.
20388
20389         * exceptions.cs: Add new regression test.
20390
20391         * mini.c (optimize_branches): Check regions in the cbranch to throw
20392         block case as well. Fixes #73242.
20393
20394 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20395
20396         * mini.c: thread safety fixes.
20397
20398 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20399
20400         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20401         patching stuff, since delegates use jump trampolines so there is
20402         no caller.
20403
20404         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20405         jump trampolines.
20406         
20407         * tramp-amd64.c: Fix build.
20408
20409         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20410         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20411
20412         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20413         Rename this to mono_arch....
20414         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20415
20416         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20417
20418         * mini-amd64.c (emit_call): If both the caller and the callee is
20419         guaranteed to have 32 bit addresses, emit a normal call.
20420
20421         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20422
20423         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20424         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20425         method_ptr inside delegates.
20426
20427 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20428
20429         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20430         invalidated. Fixes #73001.
20431
20432         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20433
20434         * mini-x86.c: Only use stdcall for pinvokes on windows.
20435
20436 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20437
20438         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20439         * mini-x86.c: remove unreliable __thread var offset detection,
20440         use the correct accessors and enable by default.
20441
20442 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20443
20444         * mini.c (mono_jit_free_method): Fix memory leak.
20445
20446 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20447
20448         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20449
20450 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20451
20452         * cpu-amd64.md: Fix lengths of atomic opcodes.
20453
20454 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20455
20456         * driver.c: try to not imply using ICU is any good.
20457
20458 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20459
20460         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20461         functions as inline ops.
20462
20463         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20464         some Interlocked functions as inline ops.
20465
20466         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20467
20468         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20469
20470         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20471
20472         * mini.c: Add support for OP_NOT_TAKEN.
20473
20474         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20475         structures in registers for pinvoke wrappers.
20476
20477         * mini-amd64.c: Fix warnings.
20478
20479 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20480
20481         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20482
20483         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20484
20485         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20486         address instead of loading the address from it.
20487
20488         * mini-x86.c: Add support for returning small structs in registers
20489         on Win32. Fixes part of #70864.
20490         
20491 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20492
20493         * trace.c (get_token): Improve error checking.
20494
20495 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20496
20497         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20498
20499 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20500  
20501         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20502         it can be reused for MonoClass.
20503         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20504         _LINKDEMAND.
20505
20506 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20507
20508         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20509         instead of a MonoReflectionMethod. The method information wasn't used
20510         when displaying SecurityException details (but will be now).
20511
20512 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20513
20514         * Makefile.am : windows build fix.
20515
20516 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20517
20518         * iltests.il: Add new regression test.
20519
20520         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20521         #72522.
20522
20523 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20524  
20525         * mini.c: Moved linkdemand check into helper function check_linkdemand
20526         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20527         LDFTN, LDVIRTFTN).
20528
20529 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20530
20531         * declsec.c: Added statistics counter for different kinds of 
20532         LinkDemands.
20533         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20534         (and commented) declaration.
20535         * mini.c: Added statistics counter for security Demand code 
20536         generation. Added display of security statistics.
20537
20538 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20539
20540         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20541         Fix compilation errors under gcc-2.95.
20542
20543 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20544
20545         * mini.c, driver.c: Use the new jit trampoline hashtable
20546
20547 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20548
20549         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20550
20551 2005-02-11  Martin Baulig  <martin@ximian.com>
20552
20553         * debug-mini.c (mono_debug_close_method): Free the line number array.
20554
20555 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20556
20557         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20558         icalls.
20559
20560         * mini.h: Bump AOT file format version. 
20561
20562 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20563
20564         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20565         APTC and P/Invoke.
20566         * declsec.h: Added macros to get/set lazyly initialized security 
20567         informations about assemblies. Added new enum for different type of
20568         possible LinkDemand violation. Added function to check LinkDemands.
20569         * mini.h: Added a field to MonoCompile to hold any security violation
20570         detected when JITting a method (so it can be thrown later).
20571         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20572         and CEE_CALLVIRT. Added code to throw exception at the end of
20573         mini_method_compile (note: the exception is unhandled right now).
20574
20575 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20576
20577         * mini.c, jit-icalls.c: use the managed implementation of
20578         memset for initobj and memset, to avoid managed <-> unmanaged
20579         transitions.
20580
20581 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20582
20583         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20584         optimization if it would need a GOT var.
20585
20586         * basic.cs: Add tests for constant propagation and switch statements.
20587
20588         * ssa.c: Fix out-of-range constant propagation and switch statements.
20589
20590 2005-02-09    <vargaz@freemail.hu>
20591
20592         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20593
20594 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20595
20596         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20597
20598 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20599
20600         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20601
20602 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20603
20604         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20605         arithmetic operations.
20606
20607 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20608
20609         * mini-ppc.c: add a workaround for broken user code that
20610         DllImports vararg functions with non-vararg signatures.
20611
20612 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20613
20614         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20615         meaningfull error message for assemblies written in Managed C++.
20616
20617         * tramp-amd64.c mini-amd64.h: Add support for 
20618         create_trampoline_from_token ().
20619
20620         * aot.c mini-x86.c abcremoval.c: Applied patch from
20621         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20622
20623 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20624
20625         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20626         which takes a MonoImage/token as parameter instead of a MonoMethod.
20627
20628         * aot.c: Use the new trampoline for initializing vtables.
20629
20630         * aot.c: Add support for ldfld/stfld_remote wrappers.
20631
20632         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20633         rules for compare <MEM>, IMM.
20634
20635         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20636
20637         * aot.c: Handle inherited finalizers correctly.
20638
20639 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20640
20641         * inssel.brg (stmt): Add a missing _setup_... ().
20642
20643         * aot.c: Save some parts of the class state to the AOT file and use it
20644         to recompute that state when a class is initialized.
20645
20646         * mini.c: Install AOT hooks into the runtime.
20647
20648         * mini.h: Bump AOT file format version.
20649         
20650         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20651         Fixes #72148.
20652
20653         * iltests.il: Add new test.
20654
20655 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20656
20657         * mini.c: fix typo.
20658
20659 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20660
20661         * mini.c: setup the statistical profiler in the thread attach
20662         callback to cope with the new single thread code.
20663
20664 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20665
20666         * mini-ppc.c: ensure we have enough room for the profiler
20667         calls (fixed bug#72084).
20668
20669 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20670
20671         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20672         it.
20673
20674 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20675
20676         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20677
20678 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20679
20680         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20681         to succesfully execute parrotbench).
20682         * ssapre.h: Likewise.
20683
20684 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20685
20686         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20687         variable for stores to method arguments (fixes a SSAPRE issue).
20688
20689 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20690
20691         * mini.c: handle value types in dup, fixes gen-112.cs.
20692
20693 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20694
20695         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20696         sequence for calls in dynamic methods to avoid thunks.
20697
20698 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20699
20700         * mini.c: correctly remove dynamic methods from the hashtable.
20701
20702 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20703
20704         * driver.c: Disabled SSAPRE until fix the bug that appears
20705         in IronPython's parrotbench.
20706
20707 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20708
20709         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20710
20711         * mini.c (mono_method_to_ir): Revert the previous change.
20712         
20713         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20714         when AOT compiling.
20715
20716         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20717         mono_jit_info_table_find () etc. when running under valgrind.
20718
20719         * inssel.brg: Fix warnings.
20720
20721         * mini-exceptions.c: Fix warnings.
20722
20723 2005-01-31  Martin Baulig  <martin@ximian.com>
20724
20725         * driver.c (compile_all_methods_thread_main): Don't try to compile
20726         generic methods or anything which has type parameters.
20727
20728 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20729
20730         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20731
20732         * TestDriver.cs: Add --verbose flags.
20733
20734         * graph.c ssa.c: Fix 64 bit warnings.
20735         
20736         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20737         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20738         Fix 64 bit warnings.
20739
20740         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20741         variable not spotted by gcc.
20742         
20743         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20744         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20745         X86_COMPARE_MEMBASE opcodes.
20746
20747         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20748
20749 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20750
20751         * *: MonoMethod->signature might be NULL now. You *MUST* use
20752         mono_method_signature.
20753
20754 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20755
20756         * driver.c (compile_all_methods_thread_main): Compile the methods
20757         without invoking cctors.
20758
20759 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20760
20761         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20762         * basic-calls.cs: test for the above.
20763
20764 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20765
20766         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20767         MonoJitInfo changes.
20768
20769 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20770
20771         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20772         eagerly if it contains dynamic methods.
20773         
20774         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20775
20776         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20777         trace, it is now computed by an icall from trace_ips.
20778         
20779         * mini-exceptions.c: Fix a warning.
20780
20781 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20782
20783         * mini-exceptions.c: don't bother getting stack trace info if
20784         it's not going to be used.
20785
20786 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20787
20788         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20789         ssapre-mini-ops.h.
20790
20791 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20792
20793         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20794
20795         * aot.c: Avoid calling mono_method_get_header () if not needed.
20796
20797         * mini.h: Bump AOT file format version.
20798         
20799         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20800
20801         * mini.c (mono_print_tree): Print more info for calls.
20802
20803 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20804
20805         * declsec.h: Remove warning by adding missing include for marshal.h
20806
20807 2005-01-26  Martin Baulig  <martin@ximian.com>
20808
20809         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20810         `ip' twice.
20811
20812 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20813
20814         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20815         flags.
20816
20817         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20818
20819         * aot.c (mono_compile_assembly): Fix a warning.
20820
20821 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20822
20823         * declsec.c: Look for security attributes on the original MonoMethod 
20824         (and not the wrapped one). This fix permissions on icalls.
20825
20826 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20827
20828         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20829
20830         * mini.c (mono_allocate_stack_slots): Add a fixme.
20831
20832         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20833
20834 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20835
20836         * inssel.brg: optimize casts of sealed types (more
20837         optimizations waiting for fixes in remoting).
20838
20839 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20840
20841         * inssel.brg (stmt): Add another dummy rule.
20842
20843         * driver.c: Fix warnings.
20844
20845         * driver.c (mono_main): If running under valgrind, instruct glib to use
20846         the system allocation functions so valgrind can track the memory
20847         allocated by the g_... functions.
20848
20849         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20850
20851         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20852
20853         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20854
20855         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20856         variables in try regions.
20857
20858         * mini.c (mini_method_compile): Don't disable optimizations on large
20859         methods when AOT compiling.
20860
20861         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20862         allocate stack slots. Not yet used.
20863
20864 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20865
20866         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20867
20868 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20869
20870         * mini-ppc.c: make the branch info relative as the code
20871         buffer can be reallocated.
20872
20873 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20874
20875         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20876         * driver.c: Removed the AOT/security restriction. Now initialize the
20877         security manager (in metadata) if --security is used.
20878         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20879         rather than the pointer to declarative security, when AOT is used.
20880
20881 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20882
20883         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20884         basic blocks, reduced intrinsic exception throwing code size.
20885
20886 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20887
20888         * driver.c (mini_usage): Reorder the usage screen.
20889
20890 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20891
20892         * mini.c (mono_resolve_patch_target): Fix warning.
20893
20894 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20895
20896         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20897         previous patch.
20898
20899         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20900
20901         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20902         breaks the amd64 build.
20903
20904         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20905         register allocation. Fixes #71454.
20906
20907         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20908
20909         * arrays.cs: Add new regression test.   
20910
20911 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20912
20913         * ssapre.c: Turned usage of snprintf to GString.
20914         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20915         (I left it on by mistake in my previous commit).
20916
20917 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20918
20919         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20920         on cond branch optimization (fixes bug# 71515).
20921
20922 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20923
20924         * abcremoval.c: Fixed bug 71062.
20925         * abcremoval.h: Likewise.
20926
20927 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20928
20929         * mini.c: Added a new functionality to optimize_branches, the removal
20930         of useless basic blocks, and fixed some problem in the removal of
20931         critical edges; some utility functions added for both purposes.
20932         * ssapre.c: Added complex expression support, and fixed bug 70637.
20933         * ssapre.h: Likewise.
20934         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20935         enabled in SSAPRE.
20936         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20937         * driver.c: Re-enabled SSAPRE.
20938
20939 2005-01-19  Martin Baulig  <martin@ximian.com>
20940
20941         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20942         the result of mono_get_method_constrained().
20943
20944 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20945
20946         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20947         manager.
20948
20949 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20950
20951         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20952         be detected.  Fixes #59296.
20953
20954 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20955
20956         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20957         which can happen. Fixes #71361.
20958
20959 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20960
20961         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20962         manager.
20963
20964 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20965
20966         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20967         appdomain-unload.exe to fail.
20968         
20969         * mini.c: Fix some memory leaks.
20970
20971 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20972
20973         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20974         Fixed bug and sped up some codepaths.
20975
20976 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20977
20978         * mini.c: Fix some memory leaks.
20979
20980         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20981         conversion.
20982
20983         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20984
20985         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20986         #71320.
20987
20988         * iltests.il: Add regression test for #71320.
20989
20990 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20991
20992         * mini.c (mono_codegen): Fix installation of profiler hooks.
20993
20994         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20995
20996 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20997
20998         * mini.h, mini.c, cfold.c: optimize access to enum
20999         readonly fields, too. Eval conditional branches if possible
21000         to perform unreachable code removal in more cases.
21001
21002 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
21003
21004         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
21005
21006         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
21007         code manager.
21008
21009         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
21010         WinXP DEP. Fixes #71244.
21011
21012 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
21013
21014         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
21015
21016 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
21017
21018         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
21019
21020 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
21021
21022         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
21023         changes.
21024
21025         * mini.h: Bump AOT version.
21026
21027         * mini.h (MonoCompile): Change exvar to a hash table.
21028
21029         * mini.c: Allocate a separate exvar for each handler block.
21030
21031         * mini.c: Get rid of the computation of filter_lengths, its not needed.
21032
21033         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
21034         ex var with the pending exception and only throw if the two are equal.
21035         Fixes #68552.
21036         
21037         * exceptions.cs: Add tests for rethrow and nested catch clauses.
21038
21039         * mini-x86.c: Fix warnings.
21040
21041         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
21042         used by all the ports now.
21043
21044         * aot.c: Add write-symbols and save-temps options.
21045
21046 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
21047
21048         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
21049
21050 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
21051
21052         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
21053         operations.
21054
21055         * tramp-s390.c: Check vtable slot belongs to the domain.
21056
21057         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
21058         as per other platforms.
21059
21060         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
21061
21062 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
21063
21064         * driver.c: we don't run the Main() code in a subthread anymore.
21065
21066 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
21067
21068         * mini.c: added experimental rtc support in the statistical
21069         profiler: if the user has the permission, more accurate statistics
21070         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
21071         The MONO_RTC value must be restricted to what the linux rtc allows:
21072         power of two from 64 to 8192 Hz.
21073
21074 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
21075
21076         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
21077
21078 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
21079
21080         * mini-ppc.c: better icache flush for smp.
21081
21082 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
21083
21084         * mini-amd64.c (emit_move_return_value): Fix memory leak.
21085
21086         * mini-x86.c (get_call_info): Add the get_call_info () code from the
21087         amd64 port, not yet used.
21088
21089 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21090
21091         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
21092         a struct type.
21093
21094 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
21095
21096         * driver.c: Added --security option to activate the security manager.
21097         Right now this will allow code generation for declarative demands and
21098         is disabled when AOT is specified.
21099         * mini.c: Add code generation for declarative security demands.
21100         * mini.h: Add mono_use_security_manager as an extern gboolean.
21101
21102 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21103
21104         * aot.c (mono_compile_assembly): Speed up compilation a bit by
21105         emitting more dense assembly code.
21106
21107         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
21108         exception throwing stuff.
21109
21110 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
21111
21112         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
21113         dead code.
21114
21115         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
21116         left in by mistake.
21117
21118         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
21119         fixed.
21120
21121         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
21122
21123         * tramp-*.c: Only patch vtable slots if the object is in the current
21124         domain. Fixes appdomain-unload.exe.
21125
21126         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
21127         
21128         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
21129         x86 branch.
21130
21131 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21132
21133         * mini.c (reverse_branch_op): New helper function.
21134
21135         * mini.c (optimize_branches): Run the new optimization only on 
21136         platforms which support it. Also reverse all kinds of branches.
21137
21138         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
21139
21140         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
21141         a throw statement.
21142
21143         * mini.c (optimize_branches): Reverse not-equals branches if the false
21144         bblock is a throw. This happens a lot of time with argument checking in
21145         corlib.
21146
21147         * mini.c (mono_codegen): Add support for placing basic blocks after
21148         the function epilogue.
21149
21150         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
21151         function epilogue.
21152         
21153 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
21154
21155         * mini.c (setup_stat_profiler): Only set this up if the platform
21156         supports ITIMER_PROF.
21157
21158 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21159
21160         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
21161         previous patch.
21162
21163         * inssel.brg: Fix a warning.
21164
21165 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
21166
21167         * mini.c: added support for statistical profiler 
21168         (run with: --profile=default:stat).
21169
21170 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
21171
21172         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
21173
21174         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
21175
21176         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
21177         related to global registers from the amd64 port.
21178
21179 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21180
21181         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
21182
21183         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21184         with global registers.
21185         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21186
21187         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21188
21189 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21190
21191         * debug-mini.c (encode_value): Fix off-by-one.
21192
21193         * aot.c (encode_value): Likewise.
21194
21195         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21196
21197 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21198
21199         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21200         AOT.
21201
21202         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21203         
21204         * aot.c (emit_method_info): Increase size of temp buffer.
21205
21206         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21207         the AOT case.
21208
21209 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21210
21211         * aot.c (emit_method_info): Fix build.
21212         
21213         * aot.c: Further rework of the AOT file format to reduce the size of
21214         the method info data.
21215
21216         * mini.h: Bump AOT file format version.
21217
21218 2004-12-27  Martin Baulig  <martin@ximian.com>
21219
21220         * mini.c (mini_get_method): New static method; call
21221         mono_get_method_full() and mono_get_inflated_method().
21222         (mono_method_to_ir): Use mini_get_method() instead of
21223         mono_get_method_full(). 
21224
21225 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21226
21227         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21228
21229 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21230
21231         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21232
21233         * inssel-amd64.brg: Add some optimization rules.
21234
21235 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21236
21237         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21238         standard not GC'd stuff is fine.
21239
21240 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21241
21242         * aot.c: Rework the AOT file format to get rid of most of the global
21243         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21244
21245         * mini.h: Bump AOT file format version.
21246         
21247 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21248
21249         * mini.h: Bump AOT file format version.
21250
21251         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21252         address is inside a GOT.
21253
21254         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21255
21256         * cpu-pentium.md: Increase the maximum size of some instructions which
21257         might involve a got access.
21258         
21259         * mini.c (get_method_from_ip): Another debug helper function.
21260
21261         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21262         when got var accesses are created during the decompose phase.
21263
21264         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21265
21266         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21267         argument mini_compile_method and to MonoCompile, and use this to
21268         determine whenever a given method is compiled for AOT. This allows the
21269         other methods compiled during AOT compilation to be free of AOT stuff,
21270         so the backends does not need to add special support for them by
21271         creating a fake GOT etc.
21272
21273         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21274         longer needed.
21275
21276 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21277
21278         * mini.c (mono_method_to_ir): It turns out that some of the
21279         x-appdomain wrappers are lax with types, so just ignore this for
21280         all wrappers.
21281
21282         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21283         at the vtable->klass. If it is non-shared code we can just use the
21284         vtable.
21285
21286 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21287
21288         * mini-ppc.c: access MonoDomain from tls, too.
21289
21290 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21291
21292         * declsec.c: Removed unused variable (and related warning ;-)
21293
21294 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21295
21296         * iltests.il: New test for LDELEMA on an array of ref types.
21297
21298         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21299         all ldelema's on reftypes.
21300         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21301         it was the wrong place to put it.
21302
21303         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21304         register to pop to make this cleaner, at the request of Paolo.
21305
21306 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21307
21308         * mini-ops.h (OP_GETHASHCODE): New op.
21309
21310         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21311
21312         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21313         operation.
21314
21315         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21316         by 25%.
21317         
21318         * mini-x86.c (mono_arch_output_basic_block): Rather than
21319
21320         add ebp, 4
21321
21322         Emit
21323
21324         pop edx
21325
21326         The first is 3 bytes while the second is 1. This saves 36 kb on
21327         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21328         see a small boost because of icache locality.
21329
21330         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21331
21332 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21333
21334         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21335         started code sharing with the generic code.
21336
21337 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21338
21339         * mini-ppc.c, cpu-g4.md: added code for direct access to
21340         tls data slots.
21341
21342 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21343
21344         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21345          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21346         to OP_TLS_GET.
21347
21348 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21349
21350         * declsec.c|h: Added functions to cache the declarative stack modifiers
21351         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21352         structure.
21353         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21354         created. Register internal calls for System.Security.SecurityFrame::
21355         _GetSecurityFrame and _GetSecurityStack.
21356         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21357         the definitions for the new stack walk/callback mechanism.
21358         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21359         first security frame for LinkDemands and InheritanceDemands) and
21360         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21361         from lupus.
21362         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21363         walk initialization (lupus).
21364
21365 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21366
21367         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21368         idiom.
21369         (handle_loaded_temps): Do not create a temporary variable for
21370         things that we know are temps. They will never be modified.
21371         (mono_spill_call): Set MONO_INST_IS_TEMP
21372         (mono_emulate_opcode): ditto
21373         (emit_tree): ditto
21374         (mono_method_to_ir.CEE_DUP): ditto
21375
21376 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21377
21378         * mini.c (type_to_eval_stack_type): Make this handle the void type
21379         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21380         (emit_tree): use ip_in_bb to special case some common idioms
21381         Update all callers to pass in the IP.
21382         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21383
21384         This gives us a nice 2% speedup in mcs bootstrap.
21385
21386         * mini-x86.c (peephole_pass): Peephole pass to make
21387         mov  [foo], eax
21388         push [foo]
21389
21390         into
21391
21392         mov [foo], eax
21393         push eax
21394
21395         * mini.c (ip_in_bb): new method.
21396         (mono_method_to_ir): use this method rather than doing the hash
21397         lookup ourselves.
21398
21399         * linear-scan.c (mono_linear_scan): When expiring actives, you
21400         don't need to keep around variables that expire on this
21401         instruction. This makes it so that:
21402              a = b + 1
21403         will turn into:
21404              store (ebx add (ebx, 1))
21405         which will become
21406              add ebx, 1
21407
21408 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21409
21410         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21411         combination to avoid doing two copies. Fix up problems with previous
21412         patch.
21413
21414         * mini.c: Fix 64 bit warnings.
21415
21416         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21417
21418 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21419
21420         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21421         changes from the x86 code.
21422
21423         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21424
21425 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21426
21427         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21428         throwing code to reduce its size, unify the AOT and non-aot code and 
21429         get rid of relocations in the AOT case.
21430
21431         * mini-x86.h mini.c exceptions-x86.c 
21432         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21433         raise corlib exceptions which doesn't require relocations in the 
21434         caller.
21435
21436         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21437
21438 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21439
21440         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21441         needed.
21442
21443         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21444         in the AOT case.
21445
21446 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21447
21448         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21449         with add function when used from Inc/dec atomic 
21450         functions. Re-enabled optimization on x86.
21451         * mini-ops.h: renamed atomic_add functions to
21452         allow _add to match the Interlocked::Add and
21453         _add_next to match Interlocked::Inc/Dec.
21454
21455 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21456
21457         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21458         linking of BBs to the end BB, and enabled SSAPRE also with
21459         consprop and copyprop (which was prevented by that bug).
21460
21461 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21462
21463         * mini-x86.c: disabling the Interlocked optimizing code. 
21464
21465 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21466
21467         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21468         file version check.
21469         
21470 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21471
21472         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21473         interlocked optimization due lack of support on x86, rewrote 
21474         exchange to take into account that base may be in eax.
21475         
21476         xsp works again; activated Interlocked optimizing code.
21477         
21478 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21479
21480         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21481
21482 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21483
21484         * mini-ops.h: Add new opcodes.
21485
21486         * mini.h: Add new patch types. Add got_var to MonoCompile.
21487
21488         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21489         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21490         make it work with all kinds of patchable code.
21491
21492         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21493         address of the GOT, and referencing entries in the GOT.
21494
21495         * mini.c: Add code to load the GOT address if needed by an opcode.
21496
21497         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21498         independent AOT code on the x86 using an elf-style Global Offset Table.
21499
21500 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21501
21502         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21503
21504 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21505
21506         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21507         when running xsp.
21508
21509 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21510
21511         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21512         of Interlocked:Increment/Decrement/Add as inline ops.
21513         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21514
21515 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21516
21517         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21518         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21519
21520 2004-12-12  Duncan Mak  <duncan@ximian.com>
21521
21522         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21523         again. `patch_info->table_size' is no longer valid after Zoltan's
21524         commit #37636.
21525
21526 2004-12-12  Martin Baulig  <martin@ximian.com>
21527
21528         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21529         if we are the "real" method, ie. not an inlined method inside it.
21530
21531 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21532
21533         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21534         before we look in the special fields table. This fixes
21535         ../tests/thread-static-init.cs.
21536
21537 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21538
21539         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21540         for Array get_Rank and get_Length. Fixes bug #70465.
21541
21542 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21543
21544         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21545         separate structure to reduce the size of MonoJumpInfo.
21546
21547 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21548
21549         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21550
21551 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21552
21553         * mini.c (mini_get_inst_for_method): Changed to allow ports
21554         to return a MonoInst instead of opcode 
21555         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21556         
21557         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21558         Allow ports to return a created MonoInst instead of op-code, will enable
21559         new optimizations.
21560         (renamed mini_get_opcode_for_method to better reflected the functionality)
21561
21562 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21563
21564         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21565
21566 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21567
21568         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21569         Fixes #69985.
21570
21571 2004-12-08  Martin Baulig  <martin@ximian.com>
21572
21573         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21574         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21575
21576 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21577
21578         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21579         correctly.
21580
21581         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21582         arithmetic.
21583
21584 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21585
21586         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21587
21588 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21589
21590         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21591         bug introduced by the previous patch.
21592
21593 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21594
21595         * mini-ppc.c, objectc.cs: handle large structs passed by value
21596         (fixes bug #69972).
21597
21598 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21599
21600         * mini-ppc.c: OP_ARGLIST implementation from
21601         Geoff Norton  <gnorton@customerdna.com>.
21602
21603 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21604
21605         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21606         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21607
21608 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21609
21610         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21611
21612 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21613
21614         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21615         support.
21616
21617 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21618
21619         * mini-sparc.c: Zero out localled-ed memory.
21620
21621         * iltests.il: Add tests for zeroing out localloc-ed memory.
21622
21623 2004-12-04  Martin Baulig  <martin@ximian.com>
21624
21625         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21626         mono_method_get_signature_full().       
21627
21628 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21629
21630         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21631         and some utility functions (always for SSAPRE), integrated SSAPRE.
21632         * mini.h: Likewise.
21633         * driver.c: Added ssapre option.
21634         * ssa.c: Small fix on OP_ARG handling.
21635         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21636         * Makefile.am: Likewise.
21637
21638 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21639
21640         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21641         now in the xp code.
21642
21643         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21644         icall.
21645
21646 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21647
21648         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21649         
21650         * cpu-s390.md : Increase instruction length of oparglist.
21651
21652         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21653
21654 2004-11-30  Martin Baulig  <martin@ximian.com>
21655
21656         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21657         virtual generic methods.  We call a special helper_compile_generic_method()
21658         icall to retrieve the method from the vtable, inflate and compile
21659         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21660
21661         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21662
21663 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21664
21665         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21666
21667 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21668
21669         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21670         Fixes #69929.
21671
21672 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21673
21674         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21675         platforms with PIC aot.
21676
21677 2004-11-28  Martin Baulig  <martin@ximian.com>
21678
21679         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21680         Fixes gen-112.cs.
21681
21682 2004-11-28  Martin Baulig  <martin@ximian.com>
21683
21684         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21685         the result of mono_type_get_underlying_type() to check whether
21686         we're byref.
21687
21688 2004-11-26  Martin Baulig  <martin@ximian.com>
21689
21690         * mini.c
21691         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21692         in the g_assert().
21693
21694 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21695
21696         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21697         the same way as the other arguments so they won't get clobbered.
21698
21699         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21700         calls through R11 since it is clobbered by the trampoline code.
21701
21702 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21703
21704         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21705         pick up in-tree mscorlib.dll.
21706
21707 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21708
21709         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21710
21711         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21712         runtime data/code are now stored in a table similar to the GOT in ELF. 
21713         This allows the code itself to be position independent.
21714
21715         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21716         loading changes.
21717
21718         * aot.c: Attach ELF type (object/function) directives to all global
21719         symbols.
21720
21721         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21722
21723         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21724
21725         * mini-amd64.h: Turn on PIC AOT code.
21726
21727         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21728         returning the offset within an OP_AOTCONST instruction where the GOT
21729         offset needs to be added.
21730
21731         * mini.h: Bump AOT file format version.
21732
21733 2004-11-25  Martin Baulig  <martin@ximian.com>
21734
21735         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21736         uninflated generic methods.
21737
21738 2004-11-25  Martin Baulig  <martin@ximian.com>
21739
21740         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21741
21742 2004-11-24  Martin Baulig  <martin@ximian.com>
21743
21744         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21745         original klass (this only applies for generic instances).
21746
21747 2004-11-24  Martin Baulig  <martin@ximian.com>
21748
21749         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21750         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21751         that array).
21752
21753 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21754
21755         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21756         localloc. Fixes #69678.
21757
21758         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21759         
21760 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21761
21762         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21763         used SSE registers on pinvoke calls. Fixes #69774.
21764
21765 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21766
21767         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21768         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21769
21770 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21771
21772         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21773         Refer directly to the mcs/ tree.
21774
21775 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21776
21777         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21778         Check if a trampoline for a synchronized method is required. 
21779
21780 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21781
21782         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21783         with localloc if needed. Throe arithmetric exception in
21784         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21785         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21786
21787 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21788
21789         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21790         types before switching on type.  Fixes #69622.
21791
21792 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21793
21794         * Makefile.am (check-local): New.  Integrate into 'make check'.
21795         (MCS,RUNTIME): Define using in-tree mono and mcs.
21796         (ILASM): New.
21797         (%.exe): Use $(ILASM).
21798
21799 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21800
21801         * mini-ppc.c: adjust initial prolog size (bug #69691).
21802
21803 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21804
21805         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21806         #69664.
21807
21808 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21809
21810         * Makefile.am (clean-local): Rename from 'clean'.
21811
21812 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21813
21814         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21815         to mono_arch_is_int_overflow. 
21816         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21817         SIGFPE events.
21818
21819 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21820
21821         * declsec.c|h: New files to support declarative security attributes.
21822         Added function to check if a method has (applicable) security.
21823         * mini.c|h: Add check for declarative security attributes in
21824         mono_method_check_inlining.
21825         * Makefile.am: Added declsec.c and declsec.h to the build.
21826
21827 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21828
21829         * mini.c, mini.h: update to keep dynamic code info per-domain.
21830
21831 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21832
21833         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21834         (mini_init): Get rid of it from here too.
21835
21836 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21837
21838         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21839         implemented OP_RETHROW (patch by Geoff Norton
21840         <gnorton@customerdna.com>).
21841
21842 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21843
21844         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21845         between appdomains.  Fixes appdomain-unload on PPC.
21846
21847 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21848
21849         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21850         mini-exceptions.c: handle the new wrapper types.
21851         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21852         token value as a MonoClass* when compiling a wrapper.
21853         mono_jit_create_remoting_trampoline now takes an additional
21854         MonoRemotingTarget parameter.
21855         
21856 2004-11-10  Martin Baulig  <martin@localhost>
21857
21858         * mini.c (mono_method_to_ir): Use `generic_container->context'
21859         rather than creating a new one.
21860
21861 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21862
21863         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21864
21865         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21866
21867 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21868
21869         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21870         the experimental aot cache stuff.
21871
21872 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21873
21874         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21875         mini-exceptions.c: update to exception clause structure changes.
21876
21877 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21878
21879         * exceptions-x86.c (throw_exception): Fix warnings.
21880
21881         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21882         for OP_RETHROW.
21883
21884 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21885
21886         * exceptions-sparc.c (get_throw_exception): Really fix this.
21887
21888 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21889
21890         * tramp-*.c: we no longer support icalls without wrappers, so
21891         a bit of code can be removed here
21892
21893 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21894
21895         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21896         patch.
21897
21898         * cpu-sparc.md: Add op_rethrow.
21899
21900         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21901
21902         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21903
21904         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21905         * mini-ops.h: Add OP_RETHROW.
21906
21907         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21908
21909         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21910
21911 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21912         
21913         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21914         Makes the output much easier to read
21915
21916 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21917
21918         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21919         prevents another huge leak when compiling with ssa. Secondly, the
21920         performance of doing this rather than freeing the lists is much
21921         better. GList does a lock every time you allocate a list link,
21922         so that it can use a memory pool. So, it is better to just use
21923         a memory pool of our own.
21924         
21925         * ssa.c, linear-scan.c: replace g_list_remove_link with
21926         g_list_delete.  The remove one does not free the GList, so we were
21927         leaking memory. On -O=all --compile-all with corlib, this cut down
21928         3 MB of allocations.
21929
21930 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21931
21932         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21933
21934         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21935
21936         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21937         into a new function mono_create_jit_trampoline ().
21938
21939 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21940
21941         * trace.c (get_spec): Allow tracing of classes without a namespace.
21942
21943 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21944
21945         * mini.c: Fix pointer overwrite in mini_method_compile.
21946
21947 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21948
21949         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21950         The darwin ABI needs some special handling for 1 and 2 byte structs
21951         Lets use lbz/lhz instead of lwz everywhere.
21952         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21953         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21954         Use stb/sth for the former, and put the latter always on stack instead of in
21955         argument registers.
21956
21957 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21958
21959         * trace.c (is_filenamechar): Add '_'.
21960
21961 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21962
21963         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21964
21965         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21966
21967 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21968
21969         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21970         depends on libmonogc. Fixes #68805.
21971
21972 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21973
21974         * mini.c (mono_jit_free_method): Provide extra information for
21975         this error.  Currently this leaks, but will be turned into a
21976         developer option in the future.
21977
21978 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21979
21980         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21981
21982 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21983
21984         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21985         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21986         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21987
21988 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21989
21990         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21991         trampolines for AOT code.
21992
21993 2004-10-22    <vargaz@freemail.hu>
21994
21995         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21996         constructed types. Fixes #68136.
21997
21998 2004-10-21  Martin Baulig  <martin@ximian.com>
21999
22000         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
22001         if it returns true, unwind the stack to the call instruction.
22002
22003 2004-10-21    <vargaz@freemail.hu>
22004
22005         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
22006
22007         * mini.h: Bump AOT version number.
22008
22009         * objects.cs: Add another test for unbox trampolines.
22010
22011         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
22012         valuetype methods.
22013
22014 2004-10-20    <vargaz@freemail.hu>
22015
22016         * driver.c: Add SHARED to the set of optimizations tested.
22017
22018         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
22019
22020         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
22021         used by CEE_NEWARR.
22022
22023         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
22024
22025 2004-10-20  Martin Baulig  <martin@ximian.com>
22026
22027         * mini-exceptions.c (mono_handle_exception): Call
22028         mono_debugger_handle_exception() to tell the debugger about
22029         catch/finally clauses.
22030
22031 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
22032
22033         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
22034
22035         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
22036         #68447.
22037
22038 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
22039
22040         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
22041         methods as their native size, fixed bug #57543, #57545.
22042         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
22043         This saves a temporary register and mullw call down into 1 (minor perf
22044         increase for cases like sum = sum * 5;  This use to translate into:
22045             li r11,5
22046             mullw r28,r28,r11
22047         It now translates to
22048             mulli r28,r28,5
22049
22050 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
22051
22052         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
22053         #68388.
22054
22055 2004-10-11  Martin Baulig  <martin@ximian.com>
22056
22057         * mini.c (mono_method_to_ir): If we're a generic method, get the
22058         MonoGenericContainer from our MonoMethodNormal and create a
22059         MonoGenericContext from it.
22060
22061 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
22062
22063         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
22064
22065         * basic-long.cs: Add test for checked i8->i2 cast.
22066
22067 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22068
22069         * inssel-ppc.brg: added a couple of speedup rules.
22070
22071 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
22072
22073         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
22074         to speed up rebuilds.
22075
22076 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22077
22078         * mini-s390.c: Minor fix to OP_OR_IMM.
22079
22080 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
22081
22082         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
22083         better. Fixes appdomain-unload.exe on sparc.
22084
22085 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
22086
22087         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
22088         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
22089         see bug 67324.
22090
22091 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
22092
22093         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
22094
22095 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
22096
22097         * mini.c: Always generate a field read/write wrapper for members
22098         of the class MarshalByRefObject since the actual instance could
22099         be a CBO.
22100
22101 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
22102
22103         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
22104
22105 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
22106
22107         * driver.c mini.h trace.c: Move the setting of the main assembly into
22108         a separate function called mono_trace_set_assembly () and call it after
22109         actually loading the main assembly. Fixes #66872.
22110
22111 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
22112
22113         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
22114         using the code manager.
22115
22116 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
22117
22118         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
22119
22120 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
22121
22122         * cpu-amd64.md: Fix bug in previous patch.
22123         
22124         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
22125         #66650.
22126
22127 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
22128
22129         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22130         mini-exceptions.c: updates for changed stack walk interface.
22131
22132 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22133
22134         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
22135
22136 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
22137
22138         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
22139
22140 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
22141
22142         * driver.c (mini_regression_list): Do not call mono_assembly_close 
22143         since assemblies can't be unloaded.
22144         
22145 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22146
22147         * cpu-amd64.md: Fix more instruction lengths.
22148
22149         * cpu-amd64.md: Fix lengths of some instructions.
22150
22151 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
22152
22153         * inssel.brg: Make the array ldelema check aot friendly.
22154
22155 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22156
22157         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
22158
22159         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
22160
22161 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
22162
22163         * mini-x86.c: Fix build.
22164
22165         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
22166         mono_type_get_underlying_type () helper function to simplify code.
22167         
22168 2004-09-09  Martin Baulig  <martin@ximian.com>
22169
22170         * mini-amd64.c: Don't access `type->data.klass' directly, call
22171         mono_class_from_mono_type() instead since the type may be a
22172         generic instance.
22173
22174 2004-09-09  Martin Baulig  <martin@ximian.com>
22175
22176         * mini-amd64.c (get_call_info): Fix support for generic instances.
22177         (add_valuetype): Use mono_class_from_mono_type() to get the class
22178         since we can be a generic instance.
22179
22180 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
22181
22182         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22183
22184 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22185
22186         * liveness.c: reset spill costs on each scan: bug 62107
22187
22188 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22189
22190         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22191         unnecessary line that doesn't compile
22192
22193 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22194
22195         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22196         trampolines, make them call an error function so people can fix their
22197         code.
22198
22199 2004-09-06  Martin Baulig  <martin@ximian.com>
22200
22201         * mini.c (mono_method_to_ir): When initializing locals, handle a
22202         generic instances like a valuetype if it's a valuetype and like a
22203         class if it's a class.
22204
22205 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22206
22207         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22208         stack. Fixes #64674.
22209
22210         * exceptions.cs: Add test for unwinding of call arguments.
22211
22212 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22213
22214         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22215         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22216         set the carry/borrow flag). The sparc and s390 implementations
22217         can now use optimized versions (and simplify the code). ppc bugfixes.
22218
22219 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22220
22221         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22222
22223 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22224
22225         * inssel-amd64.brg: Remove leftover 32 bit rule.
22226
22227         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22228
22229 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22230
22231         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22232         mono_arch_find_jit_info functions into a new function. Fix a memory
22233         leak.
22234
22235         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22236         refactored code.
22237         
22238 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22239
22240         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22241         as well.
22242         
22243         * exceptions.cs: Add array size tests.
22244
22245         * mini.c: Allocate a separate icall wrapper for each arity of 
22246         mono_array_new_va. Fixes #59509.
22247
22248         * exceptions.cs: Add testcase for 64578.
22249
22250         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22251
22252         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22253         
22254 2004-09-02  Martin Baulig  <martin@ximian.com>
22255
22256         * mini.c (mono_method_to_ir): When initializing the locals, call
22257         handle_initobj() on the generic instance itself, not its
22258         underlying type.
22259
22260 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22261
22262         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22263         MonoJitInfo for dynamic methods.
22264
22265         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22266
22267         * mini.c: Add support for freeing JIT data for dynamic methods.
22268         
22269 2004-09-01  Martin Baulig  <martin@ximian.com>
22270
22271         * mini-x86.c (is_regsize_var): Added support for generic
22272         instances.
22273         (mono_arch_emit_prolog): Make this compile again, use
22274         `x86_push_imm_template (code)'.
22275
22276 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22277
22278         * mini-x86.c: make all push_imm instructions that get
22279         patched always emit the long form
22280
22281 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22282
22283         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22284         in a per-domain hash.
22285
22286         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22287         types.
22288
22289 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22290
22291         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22292         work.
22293         
22294         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22295         work.
22296
22297         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22298         Beginnings of SSE2 support.
22299
22300         * exceptions.cs: Add more tests for checked int<->uint casts.
22301
22302 2004-08-28  Martin Baulig  <martin@ximian.com>
22303
22304         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22305         generic instances.
22306
22307         * mini.c
22308         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22309         Handle generic instances recursively.
22310
22311 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22312
22313         * iltests.il: test for conv.u8 on a constant
22314
22315 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22316
22317         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22318         LCONV_x4 (shrun_32 (membase)).
22319
22320 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22321
22322         * inssel-x86.brg: c&p rules for push/setret of long
22323
22324 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22325
22326         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22327         compare (regvar, base)
22328
22329         * inssel-x86.brg: more burg love
22330
22331         * inssel.brg: more cleanup
22332
22333         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22334
22335 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22336
22337         * basic-long.cs, basic-calls.cs: new tests for optimization.
22338
22339 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22340
22341         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22342         patch.
22343
22344 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22345
22346         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22347         
22348 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22349
22350         * inssel.brg (mini_emit_memcpy): use 
22351         NO_UNALIGNED_ACCESS to disable memcpy optimization
22352
22353 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22354
22355         * mini-amd64.c: Handle generic types in various places.
22356
22357         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22358
22359 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22360
22361         * mini.c (handle_box): Fix warning.
22362
22363         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22364
22365         * mini-amd64.h: Enable the emit_state optimization.
22366
22367         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22368
22369         * mini-amd64.c: Add some new 64 bit peephole opts.
22370
22371         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22372
22373         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22374
22375         * mini-amd64.c: Register allocator fixes.
22376
22377         * mini.c: Add an optimization to emit_state to avoid allocation of new
22378         registers on some platforms.
22379
22380 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22381
22382         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22383
22384         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22385         allocation. Fixes #63085.
22386
22387         * basic-long.cs: Add new regression test.
22388
22389         * mini-amd64.c: Register allocator improvements.
22390
22391 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22392
22393         * mini-amd64.c (read_tls_offset_from_method): Add another code
22394         sequence.
22395
22396         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22397         instruction sequence for nullifying class init trampolines.
22398
22399         * objects.cs: Add new regalloc test.
22400
22401         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22402
22403 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22404
22405         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22406         
22407         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22408         arguments.
22409
22410         * driver.c: Fix profiling after TLS changes.
22411         
22412         * driver.c (mono_main): Set mono_stats.enabled if needed.
22413
22414         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22415         CEE_BOX.
22416
22417 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22418
22419         * mini-x86.c: use a 1 op rather than a 2 op tls access
22420         instruction -> faster.
22421
22422 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22423
22424         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22425         x86 backend.
22426
22427 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22428
22429         * exceptions-sparc.c (throw_exception): fix typo
22430
22431 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22432
22433         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22434         set tree->dreg correctly with tls. Allow any
22435         register to be used.
22436
22437         * mini-x86.c (read_tls_offset_from_method): add new code
22438         generation pattern seen with GCC.
22439
22440
22441 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22442
22443         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22444         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22445         exceptions-sparc.c: fix some performance issues in exception
22446         handling and setting of the stack trace for exceptions that were
22447         already thrown.
22448
22449 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22450
22451         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22452         x86 backend.
22453         
22454         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22455         registers.
22456
22457 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22458
22459         This patch inlines tls access, when possible.
22460         
22461         * mini.h: new arch functions for TLS intrinsics.
22462         All platforms updated with a stub.
22463
22464         * mini.c: use the new intrinsics
22465
22466         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22467         arch specific intrinsic for tls variables
22468
22469 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22470
22471         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22472         under windows.
22473
22474 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22475
22476         * mini.c: thread local allocation
22477
22478 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22479
22480         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22481
22482         * Makefile.am: Link against the static version of libmonogc.
22483         
22484         * Makefile.am: Link the static versions of the convenience libraries
22485         into the mono executable.
22486
22487         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22488
22489 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22490
22491         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22492         on integer overflow.
22493
22494         * mini-amd64.c: Reorganize function call code.
22495
22496         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22497
22498 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22499
22500         * inssel-x86.brg: use xor eax,eax.
22501         
22502         * basic.cs: new tests
22503
22504 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22505
22506         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22507         in exception throwing code.
22508         
22509 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22510
22511         * inssel-x86.brg: use xor esi,esi.
22512
22513 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22514
22515         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22516         can trace methods compiled during mini_init () too.
22517
22518         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22519         CEE_CONV_U4.
22520
22521 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22522
22523         * Makefile.am: static link on x86 (r=zoltan)
22524
22525 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22526
22527         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22528         code since it causes some programs to fail.
22529
22530 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22531
22532         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22533
22534 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22535
22536         * mini.c: ovfops_op_map - add STACK_OBJ case for
22537         CONV_I 
22538         * basic.cs: add test_0_pin_string as test
22539         case for above.
22540
22541 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22542
22543         * Makefile.am: build C# if srcdir != builddir
22544
22545 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22546
22547         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22548         fall-through blocks.
22549
22550 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22551
22552         * driver.c: enable loop by default again and include abcrem in -O=all.
22553
22554 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22555
22556         * iltests.il: Add some localloc tests.
22557
22558         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22559
22560         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22561         Fixes #62574.
22562
22563         * inssel-amd64.brg: Add some optimizations.
22564
22565         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22566         for gcc-3.4.
22567
22568         * Makefile.am: Statically link mono against libmono on AMD64.
22569         
22570         * mini-amd64.c inssel-amd64.brg: Optimizations.
22571
22572 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22573
22574         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22575
22576         * tramp-amd64.c: Patch calling code in trampolines.
22577
22578 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22579
22580         * mini-amd64.c: pinvoke struct passing fixes.
22581
22582 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22583
22584         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22585         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22586
22587 2004-08-05  Duncan Mak  <duncan@ximian.com>
22588
22589         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22590         CEE_LDELEM_ANY.
22591
22592 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22593
22594         * mini-amd64.c (emit_move_return_value): Move return value for normal
22595         calls too.
22596
22597 2004-08-05  Martin Baulig  <martin@ximian.com>
22598
22599         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22600         `type->type'; just modify `type' itself when dealing with enums
22601         and generic instances.
22602         (check_call_signature): Make `simple_type' a `MonoType *'.
22603
22604 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22605
22606         * mini.c: Use OP_PADD to add offsets to addresses.
22607
22608         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22609
22610 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22611
22612         * mini-sparc.c (mono_arch_emit_epilog): fix check
22613         for folding last op into restore instruction
22614
22615 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22616
22617         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22618         helper methods using the code manager.
22619         
22620         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22621
22622         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22623
22624 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22625         
22626         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22627           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22628
22629         * mini-s390.c: fix tail processing
22630
22631 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22632
22633         * mini-ppc.c: mul.ovf.un exception name fix.
22634
22635 2004-08-03  Martin Baulig  <martin@ximian.com>
22636
22637         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22638         instances; before jumping to `handle_enum', also modify `ptype'.
22639
22640 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22641
22642         * cpu-sparc.md: fcall maximal length too small.
22643
22644 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22645
22646         * mini-amd64.c mini.h: Add initial support for passing/returning 
22647         structures to/from pinvoked methods.
22648
22649 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22650
22651         * mini-ppc.c: reg allocator fix.
22652
22653 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22654
22655         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22656
22657         * inssel.brg: Optimize memset on 64 bit machines.
22658
22659         * mini-amd64.c: Fix some vararg cases.
22660
22661 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22662
22663         * mini-s390.c: Corrected macro in emit_float_to_int
22664
22665         * s390-abi.cs: Tests to exercise the s390 ABI
22666
22667 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22668
22669         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22670         caller saved regs.
22671
22672         * basic.cs: Add a test for add.ovf.un.
22673
22674 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22675
22676         * mini-sparc.c: add case for OP_IDIV_UN
22677
22678 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22679
22680         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22681         
22682         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22683
22684 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22685
22686         * basic.cs: regression tests.
22687
22688         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22689         regressions.
22690
22691 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22692
22693         * basic.cs: Add a new test.
22694
22695         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22696         and AOT. Various fixes and optimizations.
22697
22698         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22699
22700 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22701
22702         * mini-ppc.c: make sure temp regs are not used for global reg
22703         allocation.
22704
22705 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22706
22707         * cpu-sparc.md: conv_i8 fix for 64bits
22708
22709         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22710
22711 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22712         
22713         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22714         add opcode for cmp BYTE PTR [eax], imm.
22715
22716         * inssel.brg: Make memcpy and memset takes bases.
22717
22718 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22719
22720         * *-amd64.*: More AMD64 work.
22721         
22722 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22723
22724         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22725         add a compare-not-equal opcode.
22726         
22727 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22728
22729         * mini.c: Use mono_init_from_assembly instead of mono_init.
22730         
22731 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22732
22733         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22734
22735         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22736
22737         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22738
22739         * inssel.brg: 64 bit fixes.
22740
22741         * mini.h (MonoCallInst): Add some AMD64 specific data.
22742
22743         * mini.h: Add some OP_P opcodes.
22744
22745 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22746
22747         * basic.cs: tests for 61797 and 61740
22748
22749 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22750
22751         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22752         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22753
22754 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22755
22756         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22757
22758         * *-amd64*.*: Ongoing AMD64 work.
22759
22760 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22761
22762         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22763
22764         * *-amd64*: Ongoing AMD64 work.
22765
22766         * mini-arch.h: Add AMD64 support.
22767
22768         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22769
22770         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22771
22772         * mini-ops.h: Add new opcodes.
22773
22774         * Makefile.am: Add AMD64 support.
22775
22776         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22777         rules into the inssel-long*.brg files.
22778
22779         * *-amd64.*: Add beginnings of AMD64 backend.
22780
22781 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22782
22783         * mini.c (print_dfn): commenting out the code that prints
22784         the cil. With -O=deadce, this makes -v -v crash.
22785         
22786         * cpu-pentium.md: make checkthis have a length of 2
22787
22788 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22789
22790         * mini-sparc.h: fix implementations of __builtin
22791         functions for Sun compiler for V9.
22792
22793 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22794
22795         * mini.c: use the new stelem.ref wrapper
22796         * exceptions.cs, arrays.cs: new stelem.ref tests
22797
22798 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22799
22800         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22801         new XSP should work with these changes).
22802
22803 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22804         
22805         * inssel-{long32,x86,}.brg: trivial optimizations.
22806         
22807 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22808
22809         * mini.c: load value when emitting box operation in
22810         constrained calls.
22811
22812 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22813
22814         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22815         is one byte shorter than cmp DWORD PTR [eax], 0.
22816
22817 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22818
22819         * inssel-ppc.brg: arguments on the stack are always
22820         relative to the stack pointer (spotted by Neale Ferguson).
22821
22822 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22823
22824         * exceptions-x86.c: delay appending the method name to the trace until
22825         after mono_jit_info_table_find is called, as this gets the real
22826         MonoMethod.
22827
22828 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22829
22830         * aot.c: register roots
22831
22832 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22833
22834         * aot.c : I could just use PLATFORM_WIN32 flag.
22835
22836 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22837
22838         * aot.c : Reverting the previous fix. This time it broke linux build.
22839
22840 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22841
22842         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22843
22844 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22845
22846         * mini.c (handle_stack_args): Remove some more debugging code.
22847         
22848         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22849
22850         * driver.c mini.h aot.c: Allow additional options to be specified with
22851         --aot and pass them to mono_compile_assembly.
22852
22853         * aot.c: Add experimental code to AOT compile all loaded assemblies
22854         on demand and save the code into a cache in the filesystem.
22855
22856         * aot.c: Add support for more wrapper methods.
22857         
22858         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22859         58863.
22860
22861         * cpu-*.md: Remove removed opcodes.
22862
22863         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22864         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22865         related icalls to marshal.c.
22866
22867 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22868
22869         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22870
22871         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22872
22873         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22874
22875 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22876         * liveness.c: If liveness is recomputated we need to reset the information
22877         for each variable. This way, if the liveness range has been narrowed
22878         by optimizations that happened after the last computation, we can return
22879         a smaller range.
22880         
22881         For example, if you have
22882         
22883         {
22884                 int i = 0;
22885                 
22886                 // Tons of code that does not affect i
22887                 
22888                 i = foo ();
22889                 ...
22890         }
22891         
22892         i = 0 is dead code and will be removed by SSA. However, when
22893         linear scan gets to the code, i will still appear to be live
22894         throughout the entire block. This prevents good register allocation.
22895
22896 2004-07-06  Martin Baulig  <martin@ximian.com>
22897
22898         * debug-mini.c (mono_debug_init_method): Allow
22899         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22900         (mono_debug_add_icall_wrapper): New method.
22901
22902         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22903
22904 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22905
22906         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22907         optimization.
22908
22909 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22910
22911         * aot.c (mono_aot_load_method): Fix loading of debug info.
22912
22913 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22914
22915         * aot.c: Add logging support.
22916
22917 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22918
22919         * mini.h: Add prototype for mono_print_method_from_ip.
22920
22921         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22922
22923         * inssel.brg: 64 bit fixes.
22924
22925         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22926         inssel-long32.brg.
22927
22928         * Makefile.am: Add SPARC64 support.
22929
22930 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22931
22932         * aot.c: Fix alignment problems on 32 bit platforms.
22933
22934 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22935
22936         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22937         SPARC64.
22938
22939         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22940         problems.
22941
22942         * mini.h: Bump AOT file version. Some 64 bit fixes.
22943
22944 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22945
22946         * inssel-sparc.brg: Add new rule to avoid register moves.
22947
22948         * inssel.brg: Add ldind_to_load_membase helper function.
22949
22950 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22951
22952         * mini.c: OffsetToStringData intrinsic.
22953         
22954 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22955
22956         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22957
22958         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22959         regression tests.
22960
22961         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22962 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22963
22964         * mini.c: reinstated mono_compile_get_interface_var()
22965         on x86, too, since the change breaks the Gtk# build there as well.
22966
22967 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22968
22969         * driver.c: remove loop from the default optimizations: it seems to
22970         interact badly with some of the other options (see bug #60613).
22971
22972 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22973
22974         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22975         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22976
22977 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22978
22979         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22980         vararg-using methods.
22981
22982 2004-06-21  Martin Baulig  <martin@ximian.com>
22983
22984         * mini/mini-exceptions.c
22985         (mono_handle_exception): Added `gpointer original_ip' argument.
22986         After calling mono_unhandled_exception(), call
22987         mono_debugger_unhandled_exception() and if that returns true,
22988         restore the context and return.
22989
22990 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22991
22992         * mini-ppc.c: prefer the use of relative branches so
22993         they won't need to be patched in aot code (patch from Patrick Beard).
22994
22995 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22996
22997         * aot.c: patch from Patrick Beard to make the output assembly
22998         more correct for the MacOSX assembler. Small tweak to
22999         generate sane images on Linux/PPC, too.
23000
23001 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23002
23003         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
23004         case until bug #59509 is fixed (shows up in #60332).
23005
23006 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23007
23008         * mini.c: make sure the needed wrappers are compiled, too, with
23009         precomp.
23010
23011 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
23012
23013         * driver.c: remove NPTL reference in --version output.
23014
23015 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23016
23017         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
23018         generate valid assembly for the Mach-O assembler.
23019
23020 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23021
23022         * driver.c: don't include abcrem in the all optimization specifier
23023         since it slows down jit compilation too much for now.
23024
23025 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
23026
23027         * mini.c: use BIGMUL only if both operands have the same signage.
23028         * iltests.il: Test for bug 60056. (errors related to signage in
23029         BIGMUL).
23030
23031         r=lupus.
23032
23033 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
23034
23035         * mini.c, aot.c: memory leak fixes.
23036
23037 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23038
23039         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
23040
23041 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
23042
23043         * Makefile.am: remove the -static hack completely, it links in
23044         statically glib as well.
23045
23046 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
23047
23048         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
23049         * exceptions.cs: make it compile with new mcs/csc.
23050
23051 2004-06-03 Massimiliano Mantione <massi@ximian.com>
23052         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
23053         and added relevant test case.
23054
23055 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23056
23057         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
23058         regressions in gtk-sharp.
23059
23060 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
23061
23062         * exceptions.cs: New regression tests.
23063
23064         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
23065
23066 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
23067
23068         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
23069
23070 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
23071
23072         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
23073
23074         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
23075
23076 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
23077
23078         * mini.c (mono_jit_runtime_invoke): Init class in this
23079         method instead of trusting mono_jit_compile_method to
23080         do the work (because wrappers can be in object class)
23081
23082 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
23083
23084         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
23085
23086         * basic-long.cs: New regression test.
23087
23088 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
23089
23090         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
23091         and div/rem checks.
23092
23093 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
23094
23095         * Makefile.am: fix miguel's change to build mono statically against
23096         libmono (track build dependencies).
23097
23098 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23099
23100         * cfold.c: Some glib versions do not have G_MININT32.
23101
23102 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
23103
23104         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
23105         with precision of tan, atan, sin and cos, and implemented related
23106         regressions tests (fixes bug 54467, but one new problem appeared and
23107         is not fixed yet).
23108
23109 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23110
23111         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
23112
23113         * exceptions.cs: Add test for constant folding && division by zero.
23114
23115         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
23116         since driver.c is in libmono too, so the optimization was useless.
23117
23118         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
23119         variable to driver.c so the compiler can emit more efficient code to
23120         access them.
23121
23122 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23123
23124         * Makefile.am: don't distribute generated inssel.[ch] files.
23125
23126 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
23127
23128         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
23129         into the default appdomain. Fixes #58707.
23130
23131         * jit-icalls.c: Remove the broken approximation for truncl, doing
23132         no conversion is better.
23133
23134         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
23135         Fixes #58863.
23136
23137 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23138
23139         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
23140         of the mcrxr instruction which is not available on some processors
23141         even if it's documented to be. Implement add and sub overflow correctly
23142         (still not complete for long unsigned). Speed up icalls a bit.
23143
23144 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
23145
23146         * mini.c (mono_jit_compile_method_with_opt): Make sure that
23147         we run .cctor in the current domain instead of target_domain.
23148         
23149         Fixes bug #58558, .cctor not being called in -O=shared.
23150
23151 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23152
23153         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
23154
23155 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
23156
23157         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
23158         which can be done with an imm8, do it that way.
23159         (mono_arch_output_basic_block): ditto for a jmp
23160         (mono_arch_emit_prolog): Computate maximum offset of a label.
23161
23162 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
23163
23164         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
23165         now tries to allocate prefered physical reg's for virtual
23166         regs. This reduces the number of emited spills/loads with
23167         20-30% on our core assemblies.
23168
23169 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23170
23171         * jit-icalls.c: truncl() is not needed and trunc() is
23172         the correct thing to do anyway (bug #58287).
23173
23174 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
23175
23176         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
23177         if available.
23178
23179 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23180
23181         * driver.c: enable loop optimizations by default.
23182
23183 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23184
23185         * mini-x86.c: fix calc of max loop size when aligning loops start.
23186
23187 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23188
23189         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23190         the stack.
23191
23192 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23193
23194         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23195         should set carry.
23196
23197         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23198
23199         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23200         
23201         * mini.c (inline_method): Allways inline some wrappers even if the cost
23202         is too large. Fixes #58785.
23203
23204         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23205         
23206 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23207
23208         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23209         (crichton@gimp.org). Beginning of support for sparc/linux.
23210
23211         * mini-sparc.c: Optimize retrieval of LMF address.
23212
23213 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23214
23215         * exceptions-ppc.c:  handle alloca in methods with clauses.
23216
23217 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23218
23219         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23220
23221 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23222
23223         * mini.c: Delegate most of the abort signal work to 
23224           mono_thread_request_interruption, which also handles Stop and Suspend
23225           states.
23226
23227 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23228
23229         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23230         supports the save/restore lmf opcodes.
23231
23232 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23233
23234         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23235         by gcc-3.4 as well.
23236
23237         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23238
23239 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23240
23241         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23242         methods which contain array accesses.
23243
23244         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23245         boundaries. Fixes #58537.
23246
23247         * iltests.il: Add regression test for #58537.
23248
23249 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23250
23251         * mini-x86.c (mono_arch_local_regalloc): Last part of
23252         fix for bug #58633 (releasing register to early).
23253
23254 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23255
23256         * basic-long.cs: Add new regression test.
23257
23258 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23259
23260         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23261         register too early on the chain.
23262
23263 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23264
23265         * mini.c (create_helper_signature): Use a helper function to reduce
23266         the code which needs to be written. Also set the calling convention of
23267         icalls on windows. Fixes #57840.
23268
23269 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23270
23271         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23272         exceptions-ppc.c: added helper function to get the instruction address
23273         from a signal handler context.
23274
23275 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23276
23277         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23278         from gonzalo.
23279
23280 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23281
23282         * helpers.c: Add new env variable to pass args to objdump.
23283         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23284
23285 2004-05-17  Radek Doulik  <rodo@ximian.com>
23286
23287         * Makefile.am (common_sources): added abcremoval.h so it get
23288         disted and daily mono packages on go-mono.com will build again
23289
23290 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23291
23292         * abcremoval.c: Fixed coding style, added copyright header.
23293
23294         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23295
23296         * mini.h: Added prototype for abc removal main function.
23297
23298         * build_relations_propagation_table.pl: Added copyright header.
23299
23300 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23301
23302         * basic-long.cs: reg test for complex ceq_long bug.
23303
23304 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23305
23306         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23307         reg in long and clob case (bug #58343). Fixed/added comments.
23308
23309 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23310
23311         * mini.c (mono_jit_runtime_invoke): Follow new convention
23312         of calling the invoke method with an function pointer.
23313
23314 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23315
23316         * ChangeLog: Fix author of memory leak patch.
23317
23318 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23319
23320         * Makefile.am: fix make dist as well...
23321
23322
23323 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23324
23325         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23326         on archs where pointers are 4 bytes long.
23327
23328         * Makefile.am: Added abcremoval.c source file.
23329
23330         * abcremoval.c: Added abcremoval.c.
23331
23332         * abcremoval.h: Added abcremoval.h.
23333
23334         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23335
23336         * inssel.brg: Enabled bounds check removal.
23337
23338         * mini.c: Added support for abcrem optimization.
23339
23340         * mini.h: Added abcrem optimization label.
23341
23342         * driver.c: Added support for abcrem optimization.
23343
23344         * propagated_relations_table.def: Added propagated_relations_table.def.
23345
23346 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23347
23348         * mini.c, cfold.c: fix style.
23349
23350 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23351
23352         * mini.c: handle issue with the low-level implementation of
23353         some long opcodes (bug #54209).
23354
23355 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23356
23357         * basic.cs: test for my new cmov stuff.
23358
23359 2004-05-13      Patrik Torstensson
23360
23361         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23362         opt and added peephole documentation.
23363
23364 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23365
23366         * tramp-ppc.c: rewrote the generic trampoline code.
23367
23368 2004-05-11      Patrik Torstensson
23369
23370         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23371
23372 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23373
23374         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23375
23376         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23377         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23378
23379         * mini.c: Add new icalls for AsAny marshalling.
23380
23381 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23382
23383         * tramp-ppc.c, mini-ppc.c: more cleanups.
23384
23385 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23386
23387         * mini.c: no warnings.
23388
23389 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23390
23391         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23392
23393 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23394
23395         * mini.c: In the thread abort signal handler, if the thread is in the
23396         process of being stoped, don't throw the Abort exception, just stop the
23397         thread.
23398
23399 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23400
23401         * tramp-ppc.c: removed old code.
23402
23403 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23404
23405         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23406         do some simple speed optimizations on ppc.
23407
23408 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23409
23410         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23411         and large offsets in load/store.
23412
23413 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23414
23415         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23416         it causes regressions.
23417
23418 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23419
23420         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23421         support.
23422
23423 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23424
23425         * jit-icalls.c: remove warnings.
23426         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23427         speedups for unsafe code.
23428
23429 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23430
23431         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23432
23433 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23434
23435         * basic-calls.cs: Add new regression test.
23436
23437         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23438         more portable.
23439
23440         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23441
23442         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23443         is no longer used.
23444
23445 2004-05-06      Patrik Torstensson
23446
23447         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23448         long reg allocation in any reg (not only eax:edx) and implemented 
23449         long shl/shr ops in asm instead of helpers.
23450
23451 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23452
23453         * mini-sparc.h: Fix warnings.
23454
23455         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23456         stack.
23457
23458         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23459         separate statement for clarity.
23460
23461         * mini-sparc.c: Update status.
23462
23463 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23464
23465         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23466         here.
23467
23468 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23469
23470         * inssel-ppc.brg: another small pre-release workaround:
23471         we don't do overflow detection for long_sub_un.
23472
23473 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23474
23475         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23476         (also works around a weird ppc bug: 57957).
23477
23478 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23479
23480         * tramp-ppc.c: trampoline fixes.
23481
23482 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23483
23484         * mini-ppc.c: fixed typos.
23485
23486 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23487
23488         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23489         at the top of the stack. Fixed typos. Use a frame registers
23490         for all the methods with exception clauses.
23491
23492 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23493
23494         * exceptions-ppc.c: restore fp registers.
23495
23496 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23497
23498         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23499         order from the stack top (moved the stack room to save the
23500         return value for trace after the param area). Fixed corruption
23501         in restoring registers on unwind.
23502
23503 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23504
23505         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23506
23507 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23508
23509         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23510         and prolog/epilog for methods that use it. Allow
23511         enough param area room for varargs methods. Fix miguel's
23512         breakage in exception handling.
23513
23514 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23515
23516         * Makefile.am: run genmdesc only on current arch.
23517
23518 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23519
23520         * exceptions-x86.c:
23521         * mini-x86.h: fix the build on windows.
23522
23523 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23524
23525         * 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.
23526
23527         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23528
23529         * mini-exceptions.c: New file.
23530         
23531         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23532         Move some parts of the x86 exception handling code to an 
23533         arch-independent file so it can be shared with other ports.
23534
23535 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23536
23537         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23538
23539 2004-04-26  David Waite  <mass@akuma.org>
23540
23541         * driver.c: remove comma from end of enumeration declaration
23542
23543 2004-04-26  Jackson Harper  <jackson@ximian.com>
23544
23545         * driver.c: parse config file before loading first assembly. This
23546         allows the user gac to be enabled/disabled. 
23547         
23548 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23549
23550         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23551         simpler mechanism: we do not care what is encoded initially
23552         (branch absolute or relative), we care about the code and its
23553         target.  I kept the old code for reference for now.
23554
23555         The new code tries first to determine if the jump is anywhere in
23556         the -/+32 absolute meg range, if it succeeds, it encodes using the
23557         absolute branch;  If not, it tried to find something in the
23558         relative range, if not, it uses the handle_thunk code. 
23559
23560 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23561
23562         * exceptions-ppc.c: use the correct ip register on macosx.
23563
23564 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23565
23566         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23567
23568 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23569
23570         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23571         Raise exception on integer divide by zero by hand since the hw
23572         doesn't support it. Handle NaNs in FP compares.
23573
23574 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23575
23576         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23577         code reducing duplication between the platforms and enabled
23578         signal exception handling (on linux for now).
23579
23580 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23581
23582         * exceptions-ppc.c: more macosx support.
23583
23584 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23585
23586         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23587
23588 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23589
23590         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23591
23592 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23593
23594         * iltests.il: more tests.
23595
23596 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23597
23598         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23599         vars as well.
23600
23601 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23602
23603         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23604
23605 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23606
23607         * liveness.c: Mark variables as volatile in all basic blocks reachable
23608         from exception clauses.
23609
23610 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23611
23612         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23613         inlining.
23614
23615 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23616
23617         * iltests.il, basic.cs: more tests for regalloc.
23618
23619 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23620
23621         * iltests.il: Some tests for register allocation modifications
23622         I have locally.
23623
23624 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23625
23626         * exceptions.cs: Add regression test for bug #56782.
23627
23628         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23629         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23630         the beauty of fixing the same thing in 5 different files...
23631
23632 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23633
23634         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23635         methods.
23636
23637 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23638
23639         * mini.c: Add support for STRWLPARRAY marshalling convention.
23640
23641 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23642
23643         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23644         to init the context to setup the regs pointer).
23645
23646 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23647
23648         * exceptions-ppc.c: more exceptions work.
23649
23650 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23651
23652         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23653         not allowed.
23654
23655 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23656
23657         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23658         can use the memory directly.
23659
23660         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23661
23662         add x86_add_membase, x86_sub_membase, x86_mul_membase
23663
23664 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23665
23666         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23667         GENERAL_REGS they were also hardcoded for all PPC ports.
23668
23669         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23670
23671         Remove hard-coded limit for floating point registers, use
23672         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23673
23674         Notice that in MacOS X calling conventions you can fit a lot more
23675         floating point values in registers, so I should update the PInvoke
23676         test to excercise the passing of floating point values on the
23677         stack (currently broken).
23678         
23679 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23680
23681         * tramp-ppc.c (create_trampoline_code): Added
23682         JUMP_TRAMPOLINE_SIZE. 
23683         (ppc_magic_trampoline): Follow the pattern from
23684         x86_magic_trampoline: if code is set to zero, return. 
23685         (create_trampoline_code): Always pass MonoMethod to the jump
23686         trampoline, before it was passing a null.
23687         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23688         share the code with mono_arch_create_jit_trampoline. 
23689
23690         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23691         implemented.
23692         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23693         implemented.  
23694
23695         * cpu-g4.md: Added length for jmp instruction, the worst case
23696         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23697         for save_lmf).
23698
23699 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23700
23701         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23702
23703 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23704
23705         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23706         before each IL instruction.
23707
23708         * mini.c (CEE_BOX): Fix warnings.
23709
23710 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23711
23712         * mini.c: removed a few unused vars and extra whitespace.
23713
23714 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23715
23716         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23717         checks.
23718         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23719         index.
23720         (OP_GETCHR): use the above
23721         (CEE_LDELEMA): use the above.
23722
23723         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23724         version of the generic impl.
23725         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23726         (CEE_LDELEMA): use the above.
23727
23728 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23729
23730         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23731         Fixes #56317.
23732
23733         * iltests.il: Added new regression test for #56317.
23734
23735 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23736
23737         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23738         under NetBSD. Fixes #56450.
23739
23740         * liveness.c (update_gen_kill_set): Fix previous patch.
23741
23742 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23743
23744         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23745
23746 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23747
23748         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23749         ldsfld and ldsflda.
23750
23751         * inssel-sparc.brg: Add more optimizations.
23752
23753         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23754
23755 2004-04-01  Martin Baulig  <martin@ximian.com>
23756
23757         * mini.c (handle_box): New static function; moved the
23758         implementation of CEE_BOX here.
23759         (mono_method_to_ir): Added `constrained_call' variable.
23760         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23761         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23762         mono_method_get_constrained() to get the method.
23763
23764 2004-04-01  Martin Baulig  <martin@ximian.com>
23765
23766         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23767         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23768         (mono_method_to_ir): We don't need these macros anymore since
23769         mono_class_get_full() already takes care of it. 
23770
23771 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23772
23773         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23774         use @function (as doesn't accept #function here) and check the return
23775         value of system and stop if fails.
23776
23777 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23778
23779         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23780
23781 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23782
23783         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23784
23785         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23786
23787         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23788         #56223.
23789
23790         * basic-long.cs: Add test for negation of Int64.MinValue.
23791
23792 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23793
23794         * mini-sparc.c: Update status.
23795
23796         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23797
23798         * exceptions-sparc.c: Fix return value in filters.
23799
23800         * inssel-sparc.brg: Fix register allocation in some rules.
23801
23802 2004-03-28  Martin Baulig  <martin@ximian.com>
23803
23804         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23805         if neccessary.  
23806
23807 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23808
23809         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23810         
23811         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23812         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23813         remove unused conv_u4 opcode.
23814
23815         * mini-x86.c: Remove valgrind workaround since it slows down things
23816         even when mono is not run under valgrind.
23817
23818 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23819
23820         * mini-sparc.c: Update status.
23821
23822         * inssel-sparc.brg: Add some optimizations.
23823
23824         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23825         future delay slot filling. Add support for varargs, tail calls and JMP.
23826
23827         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23828         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23829
23830         * inssel.brg: Fix register allocation in OP_ARGLIST.
23831
23832         * inssel.brg: Fix warnings.
23833
23834 2004-03-25  Martin Baulig  <martin@ximian.com>
23835
23836         * mini.c (inflate_generic_field): Removed.
23837         (mini_get_method): Removed, use mono_get_method_full(),
23838         (mini_get_class): Removed, use mono_class_get_full().
23839         (mono_method_to_ir): Pass our generic context to
23840         mono_field_from_token().        
23841
23842 2004-03-25  Martin Baulig  <martin@ximian.com>
23843
23844         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23845         of a `MonoMethod *'.
23846         (mini_get_method): Take a `MonoGenericContext *' instead
23847         of a `MonoMethod *'.
23848         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23849         a new local variable called `generic_context' which holds the
23850         current `MonoGenericContext *'; use it to lookup things.
23851
23852 2004-03-24  Martin Baulig  <martin@ximian.com>
23853
23854         * mini.c (mini_get_class): New static method; if we're inside a
23855         generic instance, inflate the class if neccessary.
23856         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23857
23858 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23859
23860         * iltests.il: New regression test for #55976.
23861
23862         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23863         #55976.
23864
23865 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23866
23867         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23868         output.
23869
23870 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23871
23872         * liveness.c: Consider SSA stores as well as loads when making vars
23873         volatile.
23874
23875         * exceptions.cs: New regression tests for register allocation.
23876         
23877 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23878
23879         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23880         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23881           domain lock only to protect puntual access to data structures.
23882           Added access lock for sighash, jit_icall_hash_name, 
23883           jit_icall_hash_addr and domain->code_mp.
23884
23885 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23886
23887         * driver.c: Print SIGSEGV handling method.
23888
23889         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23890
23891         * mini.c (setup_jit_tls_data): Handle case when this is called
23892         multiple times for a thread.
23893
23894         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23895         is different from fbxx_un. Fixes #54303. Also use constants instead of
23896         magic numbers in a lot of places.
23897
23898 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23899
23900         * exceptions.cs: Fix cctor test when --regression is used.
23901
23902 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23903
23904         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23905         for Linux/ppc.
23906
23907 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23908
23909         * inssel-ppc.brg: fixed register assignments for some rules.
23910
23911 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23912
23913         * exceptions.cs: Add test for exceptions in static constructors.
23914
23915         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23916         static constructors outside the domain lock. Fixes #55720.
23917
23918 2004-03-17  Martin Baulig  <martin@ximian.com>
23919
23920         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23921         (inflate_generic_field): Take the `MonoMethod *' instead of the
23922         `MonoClass *' and added support for generic method.
23923         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23924         have a `field->parent->gen_params', only inflate the field if it's
23925         an open constructed type.
23926
23927 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23928
23929         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23930         exception object instead of the preconstructed ones.
23931
23932 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23933
23934         * mini.c: reverted changed to sigsegv_signal_handler commited
23935         accidentally in the previous patch.
23936
23937 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23938
23939         * mini.c:
23940         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23941         running --aot with an old assembly.
23942
23943 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23944
23945         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23946         point values.
23947
23948         * mini-sparc.c: Add support for v9 branches with prediction.
23949
23950 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23951
23952         * mini.c (mini_init): #warning is GNUC only
23953
23954         * mini-sparc.h: implement __builtin_frame_address
23955         and __builtin_return_address for Sun C compiler
23956
23957 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23958
23959         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23960
23961 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23962
23963         * basic-calls.cs: Add test for unaligned byref long argument passing.
23964
23965         * mini-ops.h: Add sparcv9 compare and branch instructions.
23966
23967         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23968         v9 instructions if we have a v9 cpu.
23969
23970         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23971         registers for global allocation.
23972
23973         * exceptions-sparc.c: Fixes.
23974         
23975 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23976
23977         * liveness.c (mono_analyze_liveness): Optimized version.
23978
23979         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23980
23981         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23982         sparc work.
23983
23984         * basic-float.cs basic-calls.cs: New regression tests.
23985
23986 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23987
23988         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23989         sigaltstack implementation.
23990
23991         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23992         
23993         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23994         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23995
23996 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23997
23998         * mini.c: Fix warnings.
23999         
24000         * mini.c (mono_resolve_patch_target): New function which contains the
24001         arch independent part of the patching process.
24002
24003         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
24004         patching code to a separate function.
24005
24006 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
24007
24008         * mini.c (add_signal_handler): ifdef out on Windows
24009
24010 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
24011
24012         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
24013         cpu-sparc.md: Add exception handling support + other fixes.
24014
24015         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
24016         typed GC detection in --version.
24017
24018         * basic.cs exceptions.cs: New regression tests.
24019
24020         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
24021         the arch specific code can store data during a compilation.
24022
24023         * mini-ops.h: Add OP_SETFRET.
24024
24025         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
24026         function, register a separate icall for each arity, so the icalls can
24027         get a wrapper.
24028         
24029         * mini.c (mono_print_tree): Print negative offsets in a more readable
24030         form.
24031         
24032         * mini.c: Make signal handling work on sparc.
24033         
24034         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
24035
24036         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
24037
24038         * jit-icalls.c: Emulate truncl by aintl on solaris.
24039
24040         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
24041
24042 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
24043
24044         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
24045
24046 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
24047
24048         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
24049         a MarshalByRef type, inline a method that performs the check, taking into
24050         account that the object can be a proxy. Also implemented tow new opcodes:
24051         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
24052         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
24053         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
24054
24055 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
24056
24057         * mini-ppc.c: if a relative branch displacement is too big
24058         but it points to and area reachable with an absolute branch, 
24059         avoid the thunks.
24060
24061 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
24062
24063         * mini.c: optimize small copies in cpblk.
24064
24065 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
24066
24067         * basic-calls.cs basic-float.cs: New regression tests.
24068
24069         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
24070         negative offsets from %fp. Implement localloc. Fix local register 
24071         allocation. Fix the case when the this argument needs to be saved to
24072         the stack. Implement some missing opcodes.
24073
24074 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
24075
24076         * mini.c (mini_method_compile): Reenable global regalloc in methods
24077         with exception handlers.
24078
24079         * linear-scan.c (mono_varlist_sort): Fix warning.
24080
24081         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
24082
24083         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
24084         regalloc costs.
24085
24086         * liveness.c: Make all variables uses in exception clauses volatile, to
24087         prevent them from being allocated to registers. Fixes #42136.
24088
24089 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
24090
24091         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
24092         causes regressions.
24093
24094         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
24095         argument to mono_arch_regalloc_cost.
24096
24097         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
24098         precisely.
24099
24100 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
24101
24102         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
24103         Make the cost of allocating a variable to a register arch dependent.
24104
24105         * basic-calls.cs: Fix compilation of tests.
24106         
24107         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
24108         helper function to cut back on the number of #ifdefs needed.
24109
24110         * mini-ppc.c: Fix compilation.
24111
24112         * basic-calls.cs: New regression tests.
24113
24114         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
24115
24116         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
24117         of l0 since that is callee saved.
24118
24119         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
24120         to virtual calls.
24121
24122         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
24123         of delay instruction.
24124
24125         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
24126
24127         * mini.h (MonoCallInst): Add 'virtual' flag.
24128
24129         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
24130
24131 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
24132
24133         * *.cs: New regression tests.
24134
24135         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
24136         work.
24137
24138         * mini.c (mono_runtime_install_handlers): Fix build.
24139
24140         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
24141         'signal_stack_size' members.
24142
24143         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
24144         alternate signal stack.
24145
24146         * exceptions-x86.c: Add stack overflow handling.
24147
24148         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
24149         functions to arch independent code.
24150
24151         * mini.c (mono_print_tree): Print more detailed info for load_membase
24152         opcodes.
24153         
24154 2004-02-23  Martin Baulig  <martin@ximian.com>
24155
24156         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
24157
24158 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
24159
24160         * mini-x86.c: fixed reg allocation for div/rem.
24161
24162 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
24163
24164         * driver.c (mono_main): Report some configuratio options on --version.
24165
24166 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
24167
24168         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
24169         low in the address space. Correctly flush memory in thunks where we
24170         output native code.
24171
24172 2004-02-20  Martin Baulig  <martin@ximian.com>
24173
24174         * mini.c (mini_get_method): New static method; inflate all generic
24175         methods and methods in open generic instances.
24176         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
24177         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
24178
24179 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24180
24181         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
24182
24183         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24184
24185 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24186
24187         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24188
24189         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24190         it compile using Sun's compiler.
24191
24192 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24193
24194         * 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.
24195
24196         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24197
24198 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24199
24200         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24201         code.
24202         * mini-ppc.c: handle calls outside of the allowed range with thunks
24203         allocated using the code manager.
24204         * tramp-ppc.c: use the code manager to hold generated native code.
24205         Fixed the magic trampoline to just patch vtable entries.
24206
24207 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24208
24209         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24210         independent file.
24211
24212 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24213
24214         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24215         PPC.
24216
24217         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24218         if we have a working __thread implementation.
24219
24220         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24221         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24222
24223 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24224
24225         * mini-x86.c: Fix compilation under gcc 2.
24226         
24227 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24228
24229         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24230         contains a call to the wrapped function.
24231
24232         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24233         OP_<CALL>_IMM opcodes, and use them under X86.
24234         
24235         * mini.c (mono_jit_find_compiled_method): Fix warning.
24236
24237         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24238
24239         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24240
24241         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24242         functionality to mini.c.
24243
24244         * mini.c (mono_create_jump_trampoline): New function to create a jump
24245         trampoline. Return a compiled method instead of a trampoline if it
24246         exists. Add a cache for jump trampolines.
24247
24248         * mini.c (mono_jit_find_compiled_method): New function to return a
24249         compiled method if it exists.
24250
24251         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24252         mono_arch_create_jit_trampoline.
24253
24254         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24255         a jump trampoline. Fixes #52092.
24256         
24257 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24258
24259         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24260         which is not up-to-date. Add check_corlib_version () instead.
24261
24262         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24263         have to call it.
24264         
24265         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24266         since newer valgrind versions do not need it.
24267
24268         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24269         compile a method with a given set of optimizations.
24270
24271         * mini.c: Compile icall wrappers on-demand instead of at startup.
24272
24273         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24274         wrapper for an icall.
24275
24276 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24277
24278         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24279         #54063.
24280
24281         * iltests.il: Add test for non-empty stack before switch instruction.
24282
24283 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24284
24285         * mini.c: Add support for new stringbuilder marshalling conventions.
24286
24287         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24288
24289 2004-02-01  Martin Baulig  <martin@ximian.com>
24290
24291         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24292         in `ginst->mtype_argv'.
24293
24294 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24295
24296         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24297         facilitate grepping.
24298
24299 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24300
24301         * mini.c: fixed buglet in initobj generic implementation for references.
24302
24303 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24304
24305         * Makefile.am: make the version script conditional.
24306         * jit-icalls.c: handle missing truncl().
24307
24308 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24309
24310         * exceptions.cs: Add more tests for double->int conversion.
24311
24312         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24313         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24314
24315 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24316
24317         * driver.c: make --verbose --version emit an error
24318         if the loaded corlib doesn't match the runtime version.
24319
24320 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24321
24322         * mini-ppc.h: export ppc_patch().
24323         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24324         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24325         on par or better than on MacOSX.
24326
24327 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24328
24329         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24330         mono_lookup_pinvoke_call.
24331
24332         * mini-x86.c: Under windows, the default pinvoke calling convention is
24333         stdcall. Fixes #52834.
24334
24335         * mini.c (optimize_branches): Add an upper bound to the number of
24336         iterations to prevent infinite loops on strange loops. Fixes #53003.
24337
24338 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24339
24340         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24341         and ISINST. Fixes #52093.
24342
24343         * objects.cs (test_0_vector_array_cast): New tests.
24344         
24345 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24346
24347         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24348         checking in Array.Set ().
24349
24350         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24351         #52590.
24352
24353         * object.cs (test_0_multi_array_cast): New regression test.
24354
24355 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24356
24357         * exceptions-ppc.c: fix build on Linux/PPC.
24358
24359 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24360
24361         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24362         running under valgrind.
24363         (x86_magic_trampoline): Fix build bustage.
24364
24365         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24366         negative values as well. This is needed for the encoding of the line number
24367         info, since sometimes the line numbers are not in increasing order.
24368
24369 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24370
24371         * cpu-pentium.md (localloc): Increase the size of the localloc 
24372         instruction since it is a loop under Win32.
24373
24374         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24375         allocation.
24376
24377 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24378
24379         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24380         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24381         Max Horn (max@quendi.de). Fix file names in comments.
24382
24383 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24384
24385         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24386         avoid stack overflow.
24387         (replace_usage): Avoid uninitialized variable warnings.
24388
24389         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24390         and taking the address of valuetype variables.
24391
24392 2004-01-03  Patrik Torstensson
24393
24394         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24395         for other purposes than FP later on.
24396
24397 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24398
24399         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24400         of tail calls.
24401
24402 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24403
24404         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24405
24406 2003-12-30  Patrik Torstensson <p@rxc.se>
24407
24408         * mini-x86.h: Decreased number of availiable fp regs.
24409         Solves corner cases with FP spilling.
24410
24411 2003-12-23  Patrik Torstensson <p@rxc.se>
24412
24413         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24414         for floating point stack tracking / spilling on x86. 
24415         Fixes bug #49012.
24416         
24417         * basic-float.cs: added float mul overflow test.
24418
24419 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24420
24421         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24422
24423 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24424
24425         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24426         supports for cond branches that overflow the immediate
24427         overflow offset. mcs can compile simple programs.
24428
24429 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24430
24431         * exceptions-ppc.c: exception handling support wip:
24432         finally handlers get run on exception.
24433
24434 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24435
24436         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24437         profiling.
24438
24439 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24440
24441         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24442         initial support for stack walking and unwinding.
24443
24444 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24445
24446         * driver.c (mono_main): Make corlib-out-of-sync message more 
24447         descriptive. Also remove verify_corlib call.
24448
24449 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24450
24451         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24452         not overlap with other call's arguments, too.
24453
24454 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24455
24456         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24457         move to arch-specific code the choice of arch-specific
24458         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24459         * mini.c: ensure emulation calls will not interleave
24460         with other calls.
24461
24462 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24463
24464         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24465         the magic trampoline stack frame is dropped before executing
24466         the new method.
24467
24468 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24469
24470         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24471         and integer to fp conversions. Added support for overflowing
24472         arguments on the stack. Reserve a couple more registers as temps.
24473         Added support for aot compilation (as output still needs to be
24474         tweaked, though).
24475
24476 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24477
24478         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24479         Don't overwrite return register in some corner cases.
24480
24481 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24482
24483         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24484         static constructors when AOT compiling.
24485
24486         * driver.c (mono_main): Call mono_check_corlib_version.
24487
24488 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24489
24490         * cpu-g4.md, basic.cs: fixed div target register.
24491
24492 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24493
24494         * mini-ppc.c, basic.cs: shl_imm fix with test.
24495
24496 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24497
24498         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24499         structures by value. Misc fixes.
24500         * objects.cs: more tests.
24501
24502 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24503
24504         * mini-ppc.c: lconv.ovf.i implemented.
24505
24506 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24507
24508         * mini.c:
24509         (mini_init): don't error out if someone already called g_thread_init.
24510
24511 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24512
24513         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24514         to be any type per the spec. Fix abnormal memory usage when
24515         the same object is repeatedly thrown.
24516
24517 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24518
24519         * mini.c: check for overruns in IL code.
24520
24521 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24522
24523         * TODO: Add/remove some todo entries.
24524
24525 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24526
24527         * driver.c (mono_main): Call mono_verify_corlib.
24528
24529 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24530
24531         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24532         This has been moved to mini.c
24533         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24534         type being casted is marshalbyref it could be a proxy, so instead of
24535         emitting the type check code, emit a call to a runtime method that will
24536         perform the check by calling CanCastTo if needed.
24537
24538 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24539
24540         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24541         methods with large stack frames under Win32.
24542
24543 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24544
24545         * Makefile.am: Distribute regression tests.
24546
24547         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24548         at the end instead of inserting each variable into the sorted list.
24549
24550         * linear-scan.c (mono_varlist_sort): New helper function.
24551         
24552 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24553
24554         * mini.c: ensure arguments and locals are within bounds.
24555
24556 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24557
24558         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24559         related fixes.
24560
24561 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24562
24563         * mini.c (mono_cprop_copy_values): Fix crash.
24564
24565         * aot.c: Set verbosity back to 0.
24566         
24567 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24568
24569         * regalloc.c: complete memory leak fix by Laurent Morichetti
24570         (l_m@pacbell.net).
24571
24572 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24573
24574         * driver.c (main_thread_handler): Revert the previous patch.
24575
24576         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24577         under valgrind.
24578
24579         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24580         memory from the memory pool.
24581
24582         * driver.c (main_thread_handler): Turn on all optimizations when
24583         --aot is used.
24584
24585         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24586         an array for better performance.
24587
24588         * regalloc.c (mono_regstate_assign): Fix memory leak.
24589
24590         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24591         serialize the debug info.
24592
24593         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24594         debug info from the serialized representation.
24595
24596         * aot.c: Save debug info into the generated file and load it when 
24597         loading a method.
24598
24599         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24600
24601 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24602
24603         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24604         More FP-related fixes.
24605
24606 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24607
24608         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24609         and register allocation buglet. Hello world now runs.
24610
24611 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24612
24613         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24614         * tramp-ppc.c: fixed class init trampoline.
24615         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24616
24617 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24618
24619         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24620         mini.c: more ppc changes/fixes.
24621
24622 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24623
24624         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24625         Also optimize the case when the arguments are the same in the caller 
24626         and in the callee.
24627
24628         * iltests.il: Add tests for tail calls with valuetype arguments.
24629
24630 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24631
24632         * mini-ppc.c: fixes for struct return type.
24633
24634 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24635
24636         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24637         mono_spillvar_offset() to arch-specific code.
24638
24639 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24640
24641         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24642
24643 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24644
24645         * exceptions-x86.c: Fix stack space leaks.
24646         
24647         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24648         registers from the lmf if the method has save_lmf set.
24649
24650 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24651
24652         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24653         of icall wrappers into InvokeInDomain, since these are now per-domain.
24654
24655 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24656
24657         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24658         make some opcode emulation and intrinsic ops enabled/disabled 
24659         according to the architecture. More fixes.
24660
24661 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24662
24663         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24664
24665 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24666
24667         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24668         arch-specific handling for 'this' and struct return type to
24669         arch-specific code.
24670
24671 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24672
24673         * aot.c: prevent divide by zero error when reporting (it happened with
24674         Accessibility.dll).
24675
24676 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24677
24678         * mini.h (inst_switch): Remove unused macro.
24679
24680 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24681
24682         * aot.c:
24683         (load_aot_module): free 'info->methods' and 'info' properly. No more
24684         "free(): invalid pointer blah" messages when you have an old aot
24685         compiled assembly.
24686
24687 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24688
24689         * jit-icalls.c, mini.c: Added support for context static fields.
24690
24691 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24692
24693         * mini.c (mono_method_blittable): Methods which set LastError are not 
24694         blittable either. Fixes #51108.
24695         
24696 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24697
24698         * mini.c: flush icache.
24699         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24700
24701 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24702
24703         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24704
24705 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24706
24707         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24708         safe on IA32.
24709
24710         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24711         vararg calls.
24712
24713         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24714
24715 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24716
24717         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24718         instruction when the result is discarded.
24719
24720         * iltests.il (test_0_div_regalloc): New regression test.
24721
24722         * arrays.cs: Fix compilation error.
24723
24724 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24725
24726         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24727         float rules to inssel-x86.brg: sane architectures with FP registers
24728         don't need to implement these rules.
24729
24730 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24731
24732         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24733
24734 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24735
24736         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24737         implementation of 32 bit systems.
24738
24739 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24740
24741         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24742         (Jeroen Zwartepoorte).
24743
24744 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24745
24746         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24747         the caller and the callee matches.
24748         
24749         * mini.c (mono_method_to_ir): Add comment.
24750
24751         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24752         signbit is missing on some platforms.
24753
24754 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24755
24756         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24757
24758         * mini.c (setup_jit_tls_data): Call the new function.
24759         
24760         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24761
24762         * mini-x86.c: Add experimental support for fast access to the lmf
24763         structure under NPTL/Linux 2.6.x.
24764
24765 2003-11-06  Martin Baulig  <martin@ximian.com>
24766
24767         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24768         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24769         the debugger.
24770
24771 2003-11-02  Martin Baulig  <martin@ximian.com>
24772
24773         * mini.c (inflate_generic_field): New static method.
24774         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24775         generic instance and the field is declared in a generic type, call
24776         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24777
24778 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24779
24780         * mini.h mini.c (mono_method_same_domain): New function to return
24781         whenever the caller and the callee are in the same domain.
24782
24783         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24784
24785 2003-10-30  Martin Baulig  <martin@ximian.com>
24786
24787         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24788         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24789         method parameters.
24790         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24791         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24792
24793 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24794
24795         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24796         propagation.
24797
24798         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24799         object here, so it is in the correct appdomain etc.
24800
24801 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24802
24803         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24804         already done.
24805         (mono_method_to_ir): Avoid freeing the type created returned from
24806         mono_type_create_from_typespec, since it is put into an internal cache
24807         by the function. Fixes pointer.exe.
24808
24809         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24810         trampolines for icalls and pinvokes as well. Fixes #33569.
24811
24812 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24813
24814         * mini.c: Update after appdomain changes.
24815
24816         * mini.c (mono_jit_compile_method_inner): Allways compile native
24817         method wrappers in the root domain, since there can only be one
24818         instance of them, whose address is stored in method->info.
24819
24820 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24821
24822         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24823         environment variable. Instead detect automatically whenever running
24824         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24825         valgrind.h.
24826
24827 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24828
24829         * trace.c, trace.h: New files that implement the new trace option
24830         parsing. 
24831
24832         * driver.c: Document new --trace options.
24833
24834         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24835         mini-x86.c: Apply:
24836
24837         -       if (mono_jit_trace_calls)
24838         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24839
24840         * mini.h: prototypes.
24841         
24842 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24843
24844         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24845
24846         * mini.c inssel.brg: Implement typedefbyref opcodes.
24847
24848         * mini.c (mono_jit_compile_method): Remove unused local variable.
24849
24850         * mini.c (mono_jit_compile_method_inner): Ditto.
24851         
24852 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24853
24854         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24855         
24856         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24857
24858 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24859
24860         * mini.c (mono_no_aot): Remove unused global variable.
24861
24862         * mini.c: Thread safety fixes.
24863
24864 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24865
24866         * mini.c (mono_create_class_init_trampoline): Add a lock around
24867         class_init_hash_addr.
24868
24869         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24870         #30073.
24871
24872         * mini.c: Decompose the NEWARR instruction before decomposing its
24873         arguments. Fixes #30073.
24874
24875 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24876
24877         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24878         convention.
24879
24880 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24881
24882         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24883
24884         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24885
24886         * driver.c: Add support for compiling icall wrappers to --compile.
24887
24888 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24889
24890         * inssel.brg: The empty value in class->interface_offsets is -1, not
24891         0. Fixes #49287.
24892
24893 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24894
24895         * objects.cs: New test for 'is' operator on an array of interfaces.
24896
24897 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24898
24899         * tramp-ppc.c: update trampoline code to support jumps
24900         and class initialization.
24901
24902 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24903
24904         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24905
24906         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24907
24908         * inssel.brg (OP_UNBOX): Remove unused rule.
24909
24910         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24911         region instead of one for each method. Fixes #47813.
24912
24913 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24914
24915         * exceptions.cs (test_0_nested_finally): New regression test for
24916         nested exception handlers.
24917
24918         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24919
24920         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24921
24922         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24923         inlining.
24924
24925         * mini.c (mono_method_check_inlining): Make the inlining limit 
24926         configurable by an environment variable.
24927         
24928         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24929
24930         * mini.h: Bump AOT file version.
24931
24932         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24933         token, store the image along with the token, since the token might not 
24934         refer to the same image as the method containing the relocation, 
24935         because of inlining.
24936
24937 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24938
24939         * mini.c (mono_precompile_assemblies): New function to compile
24940         all methods in all loaded assemblies.
24941
24942         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24943
24944         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24945         iassign and fassign to int*, since they can contain large negative
24946         values if the register is spilled. Also added some comments. Fixes
24947         #45817.
24948
24949         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24950         under Win32. Fixes #42964.
24951
24952 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24953
24954         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24955
24956         * aot.c: Added support for AOT compiling methods which contain calls
24957         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24958         handled.
24959         
24960         * driver.c (compile_all_methods): Run the compilation in a thread
24961         managed by mono. Fixes #44023.
24962
24963         * mini.c (mono_codegen): Print full method name in verbose output.
24964
24965         * mini-x86.c (mono_arch_patch_code): Fix warning.
24966         
24967         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24968         jumps, since the method we are jumping to might be domain-specific.
24969
24970         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24971
24972 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24973
24974         * inssel.brg: string chars are unsigned.
24975
24976 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24977
24978         * TODO: New todo item.
24979
24980         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24981         which calls mono_runtime_class_init and patches the call site to
24982         avoid further calls.
24983         (mono_arch_create_class_init_trampoline): New arch specific function 
24984         to create a class init trampoline.
24985         (create_trampoline_code): Generalized so it can create
24986         class init trampolines as well.
24987
24988         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24989         (mono_create_class_init_trampoline): New function to create and cache
24990         class init trampolines.
24991         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24992         vtable given the address of a class init trampoline. Used by the
24993         patching process.
24994         (mono_codegen): Generate a call to a trampoline instead of
24995         mono_runtime_class_init in LDSFLD[A].
24996         (mono_codegen): Add relocations for the new trampoline.
24997         
24998         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24999         MONO_PATCH_INFO_CLASS_INIT.
25000
25001         * mini.h: Bump AOT version number.
25002
25003         * aot.c: Create a copy of the loaded code instead of using the original
25004         so methods which call each other will be close in memory, improving
25005         cache behaviour.
25006         
25007         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
25008         patch since it breaks the regression tests.
25009         
25010         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
25011         for the register saving instruction sequence since the 
25012         frame_state_for function in glibc 2.3.2 don't seem to detect it.
25013
25014 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
25015
25016         * TODO: Fix todo item && remove another.
25017
25018 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
25019
25020         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
25021         previous checkin.
25022
25023         * aot.c: Moved the check for MONO_LASTAOT into the initialization
25024         function of the module.
25025
25026         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
25027         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
25028         --no-aot command line option.
25029
25030 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
25031
25032         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
25033         by Bernie Solomon (bernard@ugsolutions.com).
25034
25035         * inssel.brg: Refactor the interface offset table related code into
25036         its separate functions and add support for the AOT case.
25037
25038 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
25039
25040         * aot.c (mono_aot_get_method_inner): Fix memory leak.
25041         
25042         * aot.c: Added mono_aot_verbose variable and made all debugging
25043         output depend on the value of this variable.
25044
25045         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
25046         method_label and info_label.
25047
25048         * mini.h mini-x86.c aot.c: Added a new relocation type 
25049         MONO_PATCH_INFO_IID for klass->interface_id.
25050
25051         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
25052         the MonoJitInfo structure.
25053
25054         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
25055         a non-root appdomain in shared mode.
25056
25057 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25058
25059         * aot.c: make aot loader less verbose. Remove free of unused variable.
25060
25061 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25062
25063         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
25064
25065         * .cvsignore: Added *.dll.
25066
25067         * mini.c (mono_print_tree_nl): New function callable while debugging.
25068
25069         * mini.c (mono_print_code): Export this.
25070
25071         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
25072         patched code.
25073
25074 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
25075
25076         * mini.h (MonoCompile): Added 'jit_info' field.
25077
25078         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
25079         the cfg structure, since it is needed by the AOT compiler.
25080
25081         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
25082
25083         * aot.c: A major rewrite. Changes include:
25084         - save exception tables for methods which have them.
25085         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
25086         to g_module_symbol.
25087         - reworked the file format so it is now much smaller and needs
25088         fewer relocation entries.
25089         
25090 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25091
25092         * aot.c (load_aot_module): Fix build bustage on platforms without
25093         Boehm GC.
25094
25095 2003-09-04  Martin Baulig  <martin@ximian.com>
25096
25097         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
25098
25099 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25100
25101         * TODO: Some new optimization ideas.
25102
25103         * aot.c: Move AOT module loading logic here from mono_assembly_open.
25104
25105         * aot.c: Save the optimization flags used to compile the code into
25106         the AOT module.
25107
25108         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
25109         support emitting domain specific code.
25110         
25111         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
25112         no longer domain neutral. It can be made domain neutral by compiling 
25113         with --optimize=shared.
25114
25115         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
25116         between appdomains.
25117
25118         * driver.c mini.h mini.c: New --no-aot debugging option which disables
25119         loading of AOT code.
25120
25121         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
25122         
25123         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
25124         if there is no domain neutrality information.
25125
25126 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25127
25128         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
25129         format version into the generated library.
25130
25131         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
25132         callee method into the caller since one of them could be shared.
25133
25134         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
25135         system exceptions from AOT code now works.
25136
25137         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
25138         method if it is domain neutral and the callee is not.
25139
25140         * graph.c (cfg_emit_one_loop_level): Fix warning.
25141
25142 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25143
25144         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
25145         last checkin.
25146
25147 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25148
25149         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
25150         is needed  by code which is executed before mono_runtime_init ().
25151         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
25152         
25153         * mini.c (mono_thread_abort): Fix warning.
25154         (mono_jit_compile_method): Call static constructor in the AOT case too.
25155
25156         * aot.c (mono_compile_assembly): Fix warning.
25157
25158 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25159
25160         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
25161
25162 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
25163
25164         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
25165
25166         * cpu-pentium.md: Fix the length of call opcodes so they include the
25167         ESP restoring instruction. Fixes #47968.
25168
25169 2003-08-28  Martin Baulig  <martin@ximian.com>
25170
25171         * mini-x86.c (mono_arch_call_opcode): Added support for
25172         MONO_TYPE_GENERICINST.
25173
25174         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
25175
25176 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25177
25178         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
25179         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
25180
25181         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
25182         metadata_section.
25183
25184 2003-08-26  Martin Baulig  <martin@ximian.com>
25185
25186         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25187         when reporting an error, set this to the actual error location.
25188         (mono_method_to_ir): Report the correct error location if
25189         get_basic_blocks() returned an error.
25190
25191 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25192
25193         * mini.c (mono_type_blittable): OBJECT is not blittable.
25194         (mono_method_blittable): Methods which have marshalling descriptors
25195         are not blittable either. Fixes #47842.
25196
25197 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25198
25199         * driver.c mini.c: Use an environment variable instead of a global 
25200         variable. Also fix the build.
25201
25202         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25203         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25204         reporting this. 
25205
25206         * driver.c mini.c: Added --with-valgrind option to turn off some
25207         code which prevents mono from running under valgrind.
25208
25209         * mini.c (mono_emit_call_args): Fixed warning.
25210
25211         * mini.c (mono_emulate_opcode): Fixed warning.
25212
25213 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25214
25215         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25216         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25217         regalloc.c, regalloc.h: specify available registers in arch-specific
25218         code and support floats in the regallocator (patch by Laurent Morichetti 
25219         <l_m@pacbell.net>)
25220
25221 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25222
25223         * mini.c: mono_thread_current() can be called only after
25224         mono_runtime_init(): rearrange code to not call it early on.
25225
25226 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25227
25228         * mini.c: allocate jump tables in the code mempools.
25229
25230 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25231
25232         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25233         freed.
25234
25235 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25236
25237         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25238         12 to 16.  This fixes bug #47453.
25239
25240
25241 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25242
25243         * mini-ppc.c: fixed indexed load and unsigned compares.
25244
25245 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25246
25247         * mini.c: reenabled installation of handler for
25248           thread abort signal.
25249
25250 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25251
25252         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25253         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25254         until it's fixed and actually useful.
25255
25256 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25257
25258         * inssel-long32.brg: couple more opcodes implemented.
25259
25260 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25261         
25262         * mini-sparc.c: Even more opcodes implemeted.
25263
25264 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25265
25266         * mini-sparc.c: More opcodes implemented.
25267
25268 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25269
25270         * mini-sparc.c: More opcodes implemented.
25271
25272 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25273
25274         * inssel-sparc.brg: Add some needed rules.  Direct
25275         copy from PPC.
25276         * Makefile.am: Use inssel-sparc.brg
25277         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25278         an assert happy for now.
25279
25280 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25281
25282         * mini-sparc.c: Fixed compile errors.
25283         * exceptions-sparc.c: Same.  We now produce a mono binary 
25284         on sparc-linux.  Yea.
25285
25286 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25287
25288         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25289         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25290         They compile, but do not work.
25291
25292 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25293
25294         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25295         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25296         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25297         (ct@gentoo.org).
25298
25299 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25300
25301         * mini.c: more opcodes implemented and better support for generics.
25302
25303 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25304
25305         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25306         * mini.c, mini.h: first cut at generics support: some new instructions 
25307         added and changed the behaviour of some of the existing ones.
25308
25309 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25310
25311         * mini.c: Removed definition of metadata_shared mutex here.
25312
25313 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25314
25315         * mini-x86.c: make vararg calls work for instance methods.
25316
25317 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25318
25319         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25320         returns the arguments in a separte list, now.
25321
25322 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25323
25324         * aot.c, mini.c: updates for array type representation changes.
25325
25326 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25327
25328         * mini.c: register function to perform jit shutdown.
25329
25330 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25331
25332         * mini.c: use a faster allocator if possible.
25333
25334 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25335
25336         * aot.c: some cleanups and portability changes.
25337
25338 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25339
25340         * mini.c: use faster allocation for CEE_BOX if possible.
25341
25342 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25343
25344         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25345         Moved inlined mempcy code to its own function so that is can be
25346         reused. Added an inline memset function as well (optimized initobj).
25347         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25348
25349 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25350
25351         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25352
25353 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25354
25355         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25356         arch code can setup the cpu for CLR execution, if needed.
25357         We use it on x86 to set the precision of FP operations.
25358
25359 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25360
25361         * mini.c: disable some optimizations if we can guess they'll cost too
25362         much for a given method.
25363
25364 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25365
25366         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25367         
25368 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25369         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25370         info collection support.
25371
25372 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25373
25374         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25375         is now implemented in the profiling API. Get rid of a couple of
25376         unnecessary global variables.
25377
25378 2003-06-15  Nick Drochak <ndrochak@gol.com>
25379
25380         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25381         * cpu-g4.md: add op_bigmul and op_bigmul_un
25382         * cpu_pentium.md: add op_bigmul_un
25383         * inssel-long32.brg: add rule for unsigned bigmul
25384         * mini-ops.h: define OP_BIGMUL_UN
25385         * mini-x86.c: THE BUG: handle (un)signed properly
25386         * mini.c: choose unsigned opcode if needed.
25387         This set of patches fixes bug #44291
25388
25389 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25390
25391         * mini.c (optimize_branches): improved to handle all kinds of
25392         conditional branches.
25393
25394 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25395
25396         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25397         don't raise exceptions.
25398
25399 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25400
25401         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25402         to arch-specific files.
25403
25404 2003-06-09  Martin Baulig  <martin@ximian.com>
25405
25406         * Makefile.am (libs): Added $(LIBGC_LIBS).
25407
25408 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25409
25410         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25411         and OP_ATAN (fixes bug#44293).
25412
25413 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25414
25415         * Makefile.am, mini-x86.c: rename cpu description array to
25416         pentium_desc, since some compilers define the 'pentium' preprocessor
25417         symbol.
25418
25419 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25420
25421         * mini.c (mini_select_instructions): add explicit branch if the
25422         following block is not the false target of a conditional branch -
25423         we need this with any optimization that reorder or remove bblocks
25424
25425         * mini.c (optimize_branches): bug fixes
25426
25427 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25428
25429         * mini.c (mono_method_to_ir): inline static readonly fields
25430
25431         * ssa.c (fold_tree): start cfold support for long (very simple
25432         cases only)
25433
25434         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25435
25436 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25437
25438         * inssel.brg: fixed memcpy (bug #44219).
25439
25440 2003-06-05  Dick Porter  <dick@ximian.com>
25441
25442         * driver.c: Set the glib log levels to not abort if g_message
25443         recurses.
25444
25445         g_set_prgname() has to happen before mini_init() so that the
25446         process handle gets the info.
25447         
25448 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25449
25450         * driver.c: add intrins to the default optimizations to get wider
25451         exposure.
25452
25453 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25454
25455         * mini.h: some large basic blocks will overflow a 16-bit
25456         integers for symbolic registers.
25457
25458 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25459
25460         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25461         (mono_arch_output_basic_block): fix bug 43499 
25462
25463 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25464
25465         * mini.c: kill duplicated definition of mono_debug_format.
25466
25467 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25468
25469         * mini-x86.c, arrays.cs: fixed register allocation bug.
25470
25471 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25472
25473         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25474
25475         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25476
25477 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25478
25479         * mini.c:
25480         (print_method_from_ip): also print source location information if
25481         available.
25482
25483 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25484
25485         * mini.c (mono_find_block_region): bug fix in region code
25486         (mini_method_compile): enable removing unreachable code again, but
25487         only in methods without exception clauses.
25488
25489 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25490
25491         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25492         Implemented arglist opcode and handling of TypedReference type.
25493         Fixed x86 call convention when a structure is returned.
25494         Minimal support for calling static vararg methods.
25495
25496 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25497
25498         * mini.c (mini_method_compile):  always remove unreachable code,
25499         because the code in them may be inconsistent  (access to dead
25500         variables for example).
25501
25502 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25503
25504         * driver.c, debug-mini.c: warning fixes.
25505
25506 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25507
25508         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25509
25510 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25511
25512         * mini.c: thread-static fields are registered in mono_class_vtable(),
25513         so ensure the function is called before checking for them.
25514
25515 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25516
25517         * mini.c (optimize_branches): fix for bug 43586
25518
25519         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25520         overflow (fixes Bug #43639)
25521
25522 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25523
25524         * mini.c, objects.cs: allow the use of stobj for primitive types.
25525
25526 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25527
25528         * mini.c: be less strict about argument checking until we support
25529         running the verifier.
25530
25531 2003-05-27  Nick Drochak <ndrochak@gol.com>
25532
25533         * basic-long.cs: tests for (ulong)int * (ulong)int also
25534         * mini.c: use the same trick for (ulong)int * (ulong)int
25535
25536 2003-05-27  Nick Drochak <ndrochak@gol.com>
25537
25538         * basic-long.cs: add regression test for (long)int * (long)int
25539         * cpu-pentium.md: add op_bigmul specification
25540         * inssel-long32.brg: add OP_BIGMUL rule
25541         * mini-ops.h: add OP_BIGMUL
25542         * mini-x86.c: register allocator: handle case where src1 needs to be
25543         in EAX.
25544         * mini.c: substitute special BIGMUL opcode in the tree for 
25545         (long)int * (long)int
25546
25547 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25548
25549         * jit-icalls.c: call the type ctor on field access if needed.
25550
25551 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25552
25553         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25554         to a method (including results of ldelema, bug#43207).
25555
25556 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25557
25558         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25559         colors to show exception handler blocks.
25560
25561         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25562         (fix for pinvoke7.cs).
25563
25564 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25565
25566         * mini.h, mini.c: ensure correct initialization order for types that
25567         require it. Prepare for lazy compilation of jit icall wrappers.
25568         Provide a name for opcode emulation to reduce unneeded mallocing.
25569
25570 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25571
25572         * mini-x86.c: better register restoring code and profiling
25573         support for tail calls.
25574
25575 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25576
25577         * mini.h, driver.c: prepare for leaf methods optimization.
25578
25579 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25580
25581         * mini.c: get targets of branches before converting a method.
25582
25583 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25584
25585         * mini.c (optimize_branches): added some experimental code (disbaled) 
25586
25587 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25588
25589         * mini.c (optimize_branches): fix branch to branch optimization 
25590
25591         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25592
25593         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25594
25595         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25596
25597         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25598         if needed.
25599
25600 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25601
25602         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25603         enable use of interface variables again.
25604
25605         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25606         I1 to registers because there is no simply way to sign extend 8bit
25607         quantities in caller saved registers on x86.
25608
25609         * inssel-float.brg: set costs of some rules to 2 so
25610         that monobure always select the arch. specific ones if supplied,
25611         regardless of the order we pass the files to monoburg.
25612
25613 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25614
25615         * mini.c, mini-x86.c: since the magic trampoline for jumps
25616         can't patch the code directly, we do it as soon as the
25617         method gets compiled.
25618
25619 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25620
25621         * mini-x86.c, mini.h: introduce a new patching method
25622         to support CEE_JMP and tail calls.
25623         * mini.c: obey tail.call. Don't precompile methods target
25624         of CEE_JMP.
25625         * tramp-x86.c: new trampoline code to handle methods
25626         reached through a jump.
25627
25628 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25629
25630         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25631         bit values to registers
25632
25633 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25634
25635         * mini.c (mono_compile_get_interface_var): share interface
25636         variables if possible.
25637
25638 2003-05-16  Martin Baulig  <martin@ximian.com>
25639
25640         * debug-mini.c (mono_init_debugger): New function to initialize
25641         the debugger.  This is not in the debugger since it needs to
25642         access some of mini's internals.
25643
25644 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25645
25646         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25647
25648 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25649
25650         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25651         for value type handling.
25652
25653 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25654
25655         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25656         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25657
25658 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25659
25660         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25661           the constructor through a proxy.
25662
25663 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25664
25665         * jit-icalls.c, inssel.brg: fixes to array element address
25666         calculations.
25667
25668 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25669
25670         * mini-x86.c (is_regsize_var): allocate pointer to registers
25671
25672 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25673
25674         * driver.c: fixed typo, added intrins to the set of optimizations
25675         tested with regressions.
25676
25677 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25678
25679         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25680         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25681         test case.
25682
25683 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25684
25685         * inssel.brg: remove some common pop instructions without side effects
25686
25687 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25688
25689         * inssel-x86.brg: fixed thinko in int to double conversions.
25690
25691 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25692
25693         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25694
25695 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25696
25697         * inssel-long32.brg: two more missing instructions.
25698
25699 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25700
25701         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25702         if not already set.
25703
25704 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25705
25706         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25707         correctly.
25708
25709         * basic-float.cs: Added tests for negative zero.
25710
25711 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25712
25713         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25714         a couple of missing operations for long casts, with test cases.
25715
25716 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25717
25718         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25719
25720 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25721
25722         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25723         code size estimation.
25724
25725 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25726
25727         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25728         abstract methods (fix bug 42542)
25729
25730         * aot.c: add ability to handle array types
25731         
25732 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25733
25734         * mini.c: Call the _specific versions of the object allocation
25735         functions if possible.
25736
25737 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25738
25739         * driver.c: call setlocale ().
25740
25741 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25742
25743         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25744         windows build.
25745
25746 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25747
25748         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25749
25750         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25751         wrappers (fix bug 42122)
25752
25753 2003-05-04  Martin Baulig  <martin@ximian.com>
25754
25755         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25756
25757         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25758         s/mini_set_defaults/mono_set_defaults/g.
25759
25760 2003-05-04  Martin Baulig  <martin@ximian.com>
25761
25762         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25763
25764 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25765
25766         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25767         (reported by Don Roberts).
25768
25769 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25770
25771         * mini.c: temporarily work around two bugs for this release.
25772
25773 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25774
25775         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25776         that contains -export-dynamic and it makes using the ld script
25777         useless.
25778         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25779
25780 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25781
25782         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25783         specific cpu.
25784
25785 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25786
25787         * mini.c: make sure leave calls all the needed finally blocks,
25788         even when the target jumps out of multiple exception clauses.
25789
25790 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25791
25792         * ldscript, Makefile.am: add linker script to reduce the number of
25793         exported symbols (should also fix the issues with libwine defining
25794         some of the same symbols in io-layer).
25795
25796 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25797
25798         * driver.c (mini_main): Avoid assertion when no file name is given on 
25799         the command line.
25800
25801 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25802
25803         * driver.c: added --version/-V command line option.
25804         Added the inline optimization in the regression tests.
25805
25806 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25807
25808         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25809         to the type in the method signature (fixes bug#42134).
25810
25811 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25812
25813         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25814
25815 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25816
25817         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25818
25819 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25820
25821         * driver.c: fixed bug #42100.
25822
25823 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25824
25825         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25826
25827 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25828
25829         * mini.c: moved most of the code required to do inlining to its own
25830         function so it can be reused. Inline also ctors if appropriate.
25831
25832 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25833
25834         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25835         the runtime can call mono API functions.
25836
25837 2003-04-27  Martin Baulig  <martin@ximian.com>
25838
25839         * debug-mini.c (mono_debug_init_method): Added
25840         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25841         send a notification to the debugger.
25842
25843         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25844         running in the Mono Debugger, just pass the breakpoint number to
25845         mono_debug_init_method().
25846
25847         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25848
25849 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25850
25851         * mini.c: allow some more unsafe compares.
25852
25853 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25854
25855         * mini-x86.c, Makefile.am: make distcheck works (partially from
25856         a patch by Richard Lee <r.h.lee@attbi.com>).
25857         * regset.c, regset.h: removed, they are unused.
25858
25859 2003-04-25  Dick Porter  <dick@ximian.com>
25860
25861         * driver.c: Usage reports the name as 'mono' not 'mini'
25862         * exceptions-x86.c: Build and run on freebsd
25863
25864 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25865
25866         * Makefile.am: install the program with the 'mono' name and
25867         the library as libmono instead of mini and libmini.
25868
25869 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25870
25871         * driver.c: provide the APIs for the embedding interface of the old jit.
25872
25873 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25874
25875         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25876
25877 2003-04-23  Martin Baulig  <martin@ximian.com>
25878
25879         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25880
25881         * driver.c: Added `--debug' command line argument to enable
25882         debugging support.
25883
25884 2003-04-23  Martin Baulig  <martin@ximian.com>
25885
25886         * debug.[ch]: Removed.  The code is now in
25887         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25888
25889         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25890         last six months.
25891
25892 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25893
25894         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25895
25896 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25897
25898         * mini.c:
25899         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25900         mono_domain_finalize.
25901         (mini_method_compile): use mono_method_profile* if the the option is
25902         enabled.
25903
25904 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25905
25906         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25907         methods with their wrapper.
25908
25909         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25910         methods with their wrapper.
25911
25912         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25913         their wrapper.
25914
25915         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25916         wrapper.
25917
25918         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25919         methods.
25920
25921 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25922
25923         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25924
25925 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25926
25927         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25928         of the mempool. This is slightly faster and uses less memory
25929
25930 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25931
25932         * mini.c: avoid O(n) allocation for variables.
25933
25934 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25935
25936         * mini.c: handle items on the stack after inlining methods.
25937
25938 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25939
25940         * mini.c: make the method->opcode optimization dependent
25941         on MONO_OPT_INSTRINS and do it lazily.
25942
25943 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25944
25945         * driver.c: print overall results at the end of regression run.
25946
25947 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25948
25949         * inssel.brg: don't overwrite symbolic registers.
25950
25951 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25952
25953         * inssel-x86.brg: fix conversion from long to float.
25954
25955 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25956
25957         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25958
25959 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25960
25961         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25962
25963         * driver.c: Added --print-vtable option as in the old JIT.
25964
25965 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25966
25967         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25968
25969 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25970
25971         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25972
25973 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25974
25975         * mini.c regalloc.c regalloc.h: Fix memory leak.
25976
25977 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25978
25979         * aot.c (mono_aot_get_method): register all used strings
25980
25981 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25982
25983         * mini.c: always intern strings references with ldstr at compile time.
25984
25985 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25986
25987         * Makefile.am: add BUILT_SOURCES.
25988
25989 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25990
25991         * driver.c: give a better error message when the assembly to execute
25992         doesn't have an entry point.
25993
25994 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25995
25996         * Makefile.am: added hack for automake
25997
25998         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25999         correct sematics.
26000
26001         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
26002
26003 22003-04-07  Martin Baulig  <martin@ximian.com>
26004
26005         * Makefile.am: Added Makefile.am.
26006
26007         * debugger-main.c: Removed, this is now in the debugger where it
26008         belongs.
26009
26010         * mini.pc.in: Call this package `mini' for the moment.
26011
26012
26013
26014
26015
26016
26017
26018
26019
26020
26021
26022
26023
26024
26025