Add IMT for MIPS. Fix MIPS branch opcodes. Fix *_OVF expansions. Cleanups to trampoli...
[mono.git] / mono / mini / ChangeLog
1 2010-07-29  Mark Mason <glowingpurple@gmail.com>
2         
3         * mini-ops.h: Fix mips branch opcodes
4         * mini-mips.h: enable IMT for MIPS
5         * mini-mips.c: Use NULLIFY_INS(), fixup *_OVF expansions with extra move.
6         * tramp-mips.c: Some cleanups to trampoline handling
7         
8 2010-07-27  Mark Mason <glowingpurple@gmail.com>
9
10         * mini-mips.c: Fix compilation errors.
11
12 2010-07-25  Zoltan Varga  <vargaz@gmail.com>
13
14         * mini-trampolines.c (common_call_trampoline): Fix a warning.
15
16 2010-07-24  Zoltan Varga  <vargaz@gmail.com>
17
18         * mini-s390x.c: Change the calling convention to pass this as first as on other
19         architectures. Remove some dead code from the get_vcall_slot().
20
21 2010-07-24  Geoff Norton  <gnorton@novell.com>
22
23         * mini-darwin.c: Having reviewed xnu-1504.7.4 it is safe to call fork directly
24         here, it seems the old implementation was a hold over from the linux behaviour
25         This fixed gdb backtrace on amd64 and ppc.
26
27 2010-07-23  Zoltan Varga  <vargaz@gmail.com>
28
29         * xdebug.c (mono_save_trampoline_xdebug_info): Call
30         mono_loader_lock/unlock_if_inited () to avoid asserts on some platforms during
31         startup.
32
33 2010-07-23  Marek Habersack  <mhabersack@novell.com>
34
35         * Makefile.am (version.h): generate version using GIT commit info,
36         removed the old svn and git-svn code.
37
38 2010-07-22  Jb Evain  <jbevain@novell.com>
39
40         * method-to-ir.c (BRANCH_COST): set to 10.
41
42 2010-07-20  Zoltan Varga  <vargaz@gmail.com>
43
44         * method-to-ir.c (op_to_op_src2_membase): Reorganize the amd64 op->op membase
45         code, it was missing a few 'break's.
46
47 2010-07-20  Zoltan Varga  <vargaz@gmail.com>
48
49         * method-to-ir.c (mini_emit_inst_for_method): Add Array.GetLength/GetLowerBound ().
50         Fixes #618176.
51
52 2010-07-16  Zoltan Varga  <vargaz@gmail.com>
53
54         * mini-arm.c: Fix the arm build by passing a MonoGenericSharingContext to get_call_info.
55
56 2010-07-16  Zoltan Varga  <vargaz@gmail.com>
57
58         * mini-llvm.c: Add more SIMD instructions.
59
60 2010-07-15  Miguel de Icaza  <miguel@novell.com>
61
62         * mini.c: Allow "casts" to be passed on MONO_DEBUG as well.
63
64 2010-07-15  Zoltan Varga  <vargaz@gmail.com>
65
66         * mini-ia64.c: Change the calling convention to pass this as first as on other
67         architectures. Remove some dead code from the get_vcall_slot() and the implementation
68         of the CALL_MEMBASE opcodes as a result.
69
70 2010-07-13  Miguel de Icaza  <miguel@novell.com>
71
72         * mini.c: LLVM is disabled by default on LLVM builds.  You can use
73         the MONO_ENV_OPTIONS to set the --llvm flag.
74
75 2010-07-13  Atsushi Enomoto  <atsushi@ximian.com>
76
77         * driver.c : windows build fix for --with-moonlight.
78
79 2010-07-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
80
81         * mini.c|h:
82         * mini-exceptions.c: Add an option to MONO_DEBUG for tracking down exceptions
83         that reach native code from a reverse pinvoke.
84
85 2010-07-11  Zoltan Varga  <vargaz@gmail.com>
86
87         * method-to-ir.c (mono_method_to_ir): Kill some duplicated code.
88
89         * mini-<ARCH>.c (get_call_info): Call mini_type_get_underlying_type () before passing
90         a type to MONO_TYPE_IS_REFERENCE (), since the latter can't handle VAR/MVAR.
91         Fixes #620864.
92
93         * generics.cs: Add a test.
94
95 2010-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
96
97         * mini.c (mono_jit_compile_method_inner): Don't bomb out if we don't
98         support a given runtime implemented method.
99
100 2010-07-10  Mark Probst  <mark.probst@gmail.com>
101
102         * mini-darwin.c: Register the exception thread with the GC.
103
104 2010-07-10  Zoltan Varga  <vargaz@gmail.com>
105
106         * mini-llvm.c (set_metadata_flag): Set metadata flags only when using the LLVM
107         mono branch.
108
109 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
110
111         * mini.h (MONO_INST_HAS_CONSTANT_LOAD): New instruction flag marking loads which load
112         from constant memory.
113
114         * ir-emit.h: Clean up the _FAULT macros a bit.
115
116         * decompose.c: Mark some loads as constant.
117
118         * mini-llvm.c: Pass the constant-ness of loads to LLVM using custom metadata.
119
120 2010-07-09  Miguel de Icaza  <miguel@novell.com>
121
122         * driver.c (mini_usage): Change the name of the --sgen flag to be
123         --gc=sgen and also support --gc=boehm.   These flags can also be
124         set on MONO_ENV_OPTIONS to propagate this to children processes.
125
126         * main.c: Remove the MONO_VM_OPTIONS environment variable that
127         only supported "sgen" and "llvm" config options and instead parse
128         the MONO_ENV_OPTIONS as options that are parsed by the command
129         line parser.   Any command line option that Mono supports can be
130         passed in this environment variable.
131
132 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
133
134         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks +
135         LLVM.
136
137         * mini.c (mini_method_compile): Run abcrem uncoditionally when LLVM is used since
138         it can now eliminate more than just bounds checks.
139
140         * ir-emit.h: Add MAY_FAULT versions of the LOAD_MEMBASE macros which take
141         an extra 'fault' argument.
142
143         * method-to-ir.c: Set the MONO_INST_FAULT of the array opcodes which are decomposed
144         later.
145
146         * decompose.c: Propagate the MONO_INST_FAULT flag from the array opcodes to their
147         decomposition.
148
149         * mini-llvm.c: Remove support for the X86/AMD64 COMPARE_MEMBASE opcodes, they are
150         no longer generated when LLVM is used.
151
152         * abcremoval.c: Eliminate MONO_INST_FAULT flags if possible.
153
154 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
155
156         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks + LLVM.
157
158 2010-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
159
160         * driver.c: Moonlight: Force line buffering for stdout.
161
162 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
163
164         * mini-llvm.c (emit_load): Revert the last changes, the load/store intrinsics
165         are only callable using invoke.
166
167 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
168
169         * mini-llvm.c (process_bb): Use emit_load () in one more place.
170
171         * mini-llvm-cpp.cpp (force_pass_linking): Link in more function passes so
172         MONO_LLVM=xxx is actually usable.
173
174         * mini-llvm.c (emit_load): Use the mono specific load intrinsics even outside clauses
175         since LLVM might be able to hoist them out of loops.
176         (emit_store): Ditto.
177
178 2010-07-08  Neale Ferguson <neale@sinenomine.net>
179
180         * mini-s390x.c: Correct setting value of header from cfg->header - fix crash
181         in typeload-unaligned test.
182
183 2010-07-08  Zoltan Varga  <vargaz@gmail.com>
184
185         * xdebug.c (mono_save_trampoline_xdebug_info): Make this receive a MonoTrampInfo.
186
187         * tramp-<ARCH>.c: Move the calls to save_trampoline_xdebug_info () into
188         mini-trampolines.c/mini-exceptions.c. Use a more human readable name for
189         generic trampolines+rgctx fetch trampolines.
190
191 2010-07-08  Geoff Norton  <gnorton@novell.com>
192
193         * genmdesc.pl: nacl is not a new inst slot, it just modifies the size slot.
194
195 2010-07-07  Zoltan Varga  <vargaz@gmail.com>
196
197         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Add xdebug info.
198
199         * method-to-ir.c (emit_imt_argument): Call add_outarg_reg even if MONO_ARCH_IMT_REG
200         is not defined in the LLVM case to keep the imt arg alive.
201
202 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
203
204         * exceptions-<ARCH>.c mini-llvm.c: Clean up the naming of the llvm related trampoline
205         functions, now its 'llvm_<FOO>_trampoline'.
206
207         * method-to-ir.c (emit_imt_argument): Fix llvm support.
208
209         * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
210         cannot be passed in the same call.
211
212         * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
213         register to be the same as the RGCTX register, the two can't be used together on
214         the same call.
215
216 2010-07-05  Miguel de Icaza  <miguel@novell.com>
217
218         * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
219         that allows the user to force the VM to use llvm or sgen.
220
221 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
222
223         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
224         before processing the exception on PPC too.
225
226         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
227
228         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
229         'this' is always passed as the first argument, before the vtype ret arg. This
230         simplifies get_this_arg_reg () and LLVM integration.
231
232 2010-07-05  Martin Baulig  <martin@ximian.com>
233
234         * exceptions-x86.c (mono_arch_handle_exception): Port this to
235         Windows; apply my patch from r159782 in the mono-2-6 branch.
236
237 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
238
239         * Makefile.am: Don't build the debug assembler files if we're building without
240         debugger support.
241
242 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
243
244         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
245
246 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
247
248         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
249         length.
250
251         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
252         regs [ARMREG_FP] instead.
253
254         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
255
256         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
257         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
258
259         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
260
261         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
262
263         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
264
265         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
266         without IMT_REG defined (ARM).
267
268         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
269         the trampolines.
270
271 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
272
273         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
274
275 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
276
277         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
278         definitions to match their declarations and vice-versa.
279
280 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
281
282         * Makefile.am (common_sources): Add mini-llvm.h.
283
284         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
285
286 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
287
288         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
289         compiling.
290
291 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
292
293         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
294         implemt the option of loading the llvm backend from a module so
295         that we can have a single binary and the bloat from llvm is
296         only experienced when it is actually loaded.
297
298 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
299
300         * mini-llvm.c: remove direct access to mono_defaults.
301
302 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
303
304         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
305         a no-op.
306
307         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
308
309         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
310         is now mono_arch_nullify_class_init_trampoline ().
311         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
312         opcodes, they are no longer needed.
313
314         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
315         now mono_arch_nullify_class_init_trampoline ().
316         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
317         opcodes, they are no longer needed.
318
319         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
320         vtable on platforms which support it.
321
322         * driver.c: Print the full LLVM version we are compiled against in --version.
323
324         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
325         a bit better. Decode nesting information to fix eh support for llvm+aot.
326
327         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
328         methods.
329
330         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
331
332         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
333         is always passed as the first argument, before the vtype ret arg. This simplifies
334         get_this_arg_reg () and LLVM integration.
335
336 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
337
338         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
339         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
340         most of the vcall specific code to mono_vcall_trampoline () from
341         common_call_trampoline ().
342
343 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
344
345         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
346         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
347         if the callsite is patched.
348
349         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
350         the llvm branch.
351
352         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
353         the trampoline in the xdebug info.
354
355         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
356         as well.
357
358 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
359
360         * mini-llvm.c: Fix a few problems exposed by make check.
361
362 2010-06-25  Mark Probst  <mark.probst@gmail.com>
363
364         * mini-trampolines.c (common_call_trampoline): An ugly hack to
365         work around a potentially very hard to fix problem with inflating
366         generic methods.
367
368 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
369
370         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
371         problem has been fixes.
372
373 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
374
375         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
376
377         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
378         It might be be better to define a MonoGCJitOptions structure later and have the
379         GC return that.
380
381         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
382
383         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
384
385         * debugger-agent.c (get_objref): Implement support for sgen.
386
387         * driver.c: Remove the unused gc_wrapper.h include.
388
389         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
390         implementation.
391
392 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
393
394         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
395
396         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
397         in MonoCompile.
398
399         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
400         instead.
401
402 2010-06-23  Miguel de Icaza  <miguel@novell.com>
403
404         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
405         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
406
407         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
408         it only for Boehm diagnostics.
409
410         * Makefile.am: Make the file a bit more consistent.
411
412         * debug-debugger.c: Wrap the entire file with an #ifdef
413         MONO_DEBUGGER_SUPPORTED to simplify the build.
414
415         * Makefile.am: Fix the opcodes build issue by including the
416         source, not by including the .lo file directly
417
418         Always bring the MDB sources into the build, to drop the
419         dependency on the AM_CONDITIONAL from configure.in as the hard
420         debugger supports Boehm, but not Sgen, this simplifies the build. 
421
422         * Renamed the *.s files into *.S
423
424 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
425
426         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
427         wb for now on 64bits systems while issues with valuetype returns
428         are not fixed.
429
430 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
431
432         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
433         passes by calling createStandardFunctionPasses ().
434
435 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
436
437         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
438
439 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
440
441         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
442         MONO_INST_FAULT.
443
444         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
445         allow better optimization if the OP_LDADDR which caused the flag to be set was
446         optimized away.
447
448         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
449
450         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
451         the type token.
452
453         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
454
455         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
456
457 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
458
459         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
460         to handle the code sequence generated for non-near calls. Fixes #616056.
461
462 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
463
464         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
465
466         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
467
468         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
469         nesting clause too.
470         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
471         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
472         trampoline which saves the context, so changes made to callee saved registers in
473         finally clauses are visible to a nesting catch clause.
474
475         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
476
477         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
478         in LLVM compiled code.
479         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
480         the finally handler has ran.
481
482         * mini.h (ResumeState): New structure containing information required to resume
483         exception handling after executing LLVM compiled finally clauses.
484
485         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
486         bit, by passing all the registers as one argument.
487
488 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
489
490         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
491         to avoid an assert.
492
493 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
494
495         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
496
497         * aot-compiler.c aot-runtime.c: Fix LLVM support.
498
499         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
500         pad, branch to a new bblock instead.
501
502         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
503         orig_method.
504
505         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
506
507         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
508
509 2010-06-17  Geoff Norton  <gnorton@novell.com>
510
511         * mini-arm.h:
512         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
513         can be used by sgen.
514
515 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
516
517         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
518
519         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
520         fails.
521
522         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
523         the ip done by throw_exception (), it is not needed for corlib exceptions.
524
525 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
526
527         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
528         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
529         of size > 5 words. This support fast barriers for value types up to
530         256/512 bytes which     beyond that the copying itself is the major issue.
531
532         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
533         for gsharing, so use it.
534
535         This eliminate all calls to mono_value_copy from managed code in
536         gmcs, fsharp and ipy.
537
538         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
539
540         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
541         performance kept
542
543         * mini.c (mini_init): Register new icall.
544
545 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
546
547         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
548         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
549
550 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
551
552         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
553         value types as the overhead is huge. Manually expand it up to 5 words to
554         avoid code bloat.
555
556         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
557         is an exception that performance is dominated by mono_value_copy.
558
559         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
560
561 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
562
563         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
564         trampolines on x86, since those have their own cconv.
565
566         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
567         exception trampolines.
568
569         * tramp-x86.c: Add xdebug info for a few trampolines.
570
571         * mini-llvm.c: Set the name of the arguments.
572
573         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
574         using a block address if using the LLVM mono branch.
575
576         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
577         trampolines.
578
579 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
580
581         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
582
583         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
584
585         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
586
587         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
588
589         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
590         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
591         to identify the vtable slot address plus the method which needs to be compiled.
592
593         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
594         using llvm.
595
596         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
597         'this' is always passed as the first argument, before the vtype ret arg. This
598         simplifies get_this_arg_reg () and LLVM integration.
599
600         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
601         the latest changes.
602
603         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
604         these trampolines.
605
606         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
607
608         * mini-llvm.c: Fix compilation with llvm 2.6.
609
610         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
611
612         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
613         defined.
614
615         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
616         is always passed as the first argument, before the vtype ret arg. This simplifies
617         get_this_arg_reg () and LLVM integration.
618
619 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
620
621         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
622
623         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
624         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
625         translate into much nicer code.
626
627 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
628
629         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
630         parameter index information. Use this to simplify a lot of code.
631
632         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
633
634 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
635
636         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
637         to fix infinite generic recursion. Fixes #612702.
638
639 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
640
641         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
642         imt trampoline per imt slot when using LLVM.
643
644 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
645
646         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
647
648 2010-06-09  Levi Bard  <levi@unity3d.com>
649
650         * debugger-agent.c: Clear unloaded types on appdomain unload.
651
652 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
653
654         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
655         Fixes #612206.
656
657         * exceptions.cs: Add a test.
658
659 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
660
661         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
662
663         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
664
665         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
666         so it doesn't have to do it.
667
668         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
669         process does not mix with ours.
670
671         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
672         ones.
673
674         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
675         loads/stores which can throw exceptions inside clauses.
676
677 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
678
679         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
680         one ENDFINALLY.
681
682         * mini.c (mini_init): Register mono_resume_unwind as an icall.
683
684 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
685
686         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
687
688         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
689         locals.
690
691 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
692
693         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
694         appdomain.
695
696 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
697
698         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
699         Use a separate generic class init trampoline for llvm, since it needs a different
700         signature.
701
702         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
703         includes the location of this/rgctx.
704
705         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
706         branch.
707
708 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
709
710         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
711
712         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
713         clause.
714
715 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
716
717         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
718         says so.
719
720         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
721
722         * aot-compiler.c (patch_to_string): New debugging helper function.
723
724 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
725
726         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
727         trampoline.
728
729         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
730
731         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
732
733         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
734
735         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
736         clauses.
737
738         * mini.c (create_jit_info): Print EH clause info for LLVM too.
739
740 2010-05-28  Mark Probst  <mark.probst@gmail.com>
741
742         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
743         cpobj with reference types.
744
745 2010-05-28  Mark Probst  <mark.probst@gmail.com>
746
747         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
748         write barrier for reference types.
749
750 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
751
752         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
753         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
754
755 2010-05-31  Martin Baulig  <martin@ximian.com>
756
757         Fix #608271.
758
759         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
760         clear_breakpoint() on all breakpoint events and remove them from the list.
761
762 2010-05-27  Martin Baulig  <martin@ximian.com>
763
764         Fix #605698.
765
766         * debugger-agent.c (method_commands, type_commands): Temporarily
767         set the appdomain while executing this method; do all metadata
768         calls in the debuggee's appdomain where user assemblies are loaded.
769
770 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
771
772         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
773
774 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
775
776         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
777
778 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
779
780         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
781         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
782         be referenced even after the header is freed.
783
784         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
785         section.
786
787 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
788
789 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
790
791         * genmdesc.c (main): Fixing the detection of the nacl switch.
792
793         Code is contributed under MIT/X11 license.
794
795 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
796
797         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
798
799         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
800
801         * mini.h (LLVM_CHECK_VERSION): New helper macro.
802
803 2010-05-25  Miguel de Icaza  <miguel@novell.com>
804
805         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
806         the Perl program
807
808         * genmdesc.c: Added support for nacl: key on the machine
809         description files to support the extra space required by Google
810         Native Client.
811
812 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
813
814         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
815
816 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
817
818         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
819         mono_runtime_class_init_full ().
820         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
821
822 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
823
824         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
825
826 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
827
828         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
829         two are not the same on ilp32.
830
831 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
832
833         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
834         added by mistake.
835
836         * mini-ppc.c: Fix the DISABLE_JIT build.
837
838 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
839
840         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
841         (make_writable): Remove this unused function.
842
843 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
844
845         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
846         structure. Make the labels to plt entries local symbols instead of assembler local
847         labels, since tha latter causes problems for the iphone linker.
848
849 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
850
851         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
852
853 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
854
855         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
856         (ppc_patch_full): Ditto.
857
858         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
859
860         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
861         if gshared is enabled, to avoid asserts in the trampoline code.
862
863         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
864         on ia64.
865
866 2010-05-15  Geoff Norton  <gnorton@novell.com>
867
868         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
869         xdebug mode.
870
871 2010-05-14  Geoff Norton  <gnorton@novell.com>
872
873         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
874         misaligned stack on darwin.
875
876 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
877
878         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
879         arm.
880
881 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
882
883         * xdebug.c: Fix ARM support.
884
885 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
886
887         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
888         and do most of the work on the normal stack.
889         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
890
891 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
892
893         * aot-compiler.c: Put non-code data into the .rodata section on linux.
894
895 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
896
897         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
898
899 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
900
901         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
902         and do most of the work on the normal stack.
903
904 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
905
906         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
907         and do most of the work on the normal stack even if sigaltstack is disabled.
908
909 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
910
911         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
912         UCONTEXT_REG_ constants are available on linux as well.
913         (mono_arch_monoctx_to_sigctx): Ditto.
914         (mono_arch_ip_from_context): Ditto.
915
916 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
917
918         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
919         other domains.
920
921 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
922
923         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
924         no longer needed.
925
926 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
927
928         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
929         if a breakpoint cannot be inserted.
930
931 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
932
933         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
934
935 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
936
937         * debugger-agent.c (frame_commands): Return an error instead of asserting if
938         no JIT info is found for the method.
939
940 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
941
942         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
943         in debug printf.
944
945 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
946
947         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
948         a list of arch specific trampolines.
949
950         * aot-compiler.c (emit_trampolines): Use it.
951
952 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
953
954         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
955         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
956         get rid of the _full from their name.
957
958 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
959
960         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
961         get_nullified_class_init_trampoline to remove some code duplication.
962
963 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
964
965         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
966         attach.
967
968 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
969
970         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
971
972         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
973
974         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
975         there is no need to jump through the first plt entry.
976
977         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
978
979         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
980         arch-specific function.
981         (mono_aot_get_plt_info_offset): Ditto.
982
983         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
984         mono_arch_init () to register jit icalls called from full-aot trampolines.
985         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
986         to mini-<ARCH>.c.
987
988         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
989         the specialized throw corlib exception trampoline, use a variant of the normal
990         trampoline along with a new C function which does the call to
991         mono_exception_from_token (), just like on x86.
992
993 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
994
995         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
996         Reorganize the full aot trampoline creation functions, instead of taking a bunch
997         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
998         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
999         creation functions on architectures which have the full-aot ones.
1000
1001 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
1002
1003         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
1004
1005 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
1006
1007         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
1008         explicitly, this seems to be required by some gcc versions at -O2.
1009
1010         * mini-arm.c: Ditto.
1011
1012 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
1013
1014         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
1015         has_target delegate invokes.
1016
1017 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
1018
1019         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
1020         info fields.
1021
1022         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
1023         add patches/unwind info arguments, move to mini.c.
1024
1025         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
1026
1027 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
1028
1029         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
1030         command which returns full path names.
1031
1032 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1033
1034         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
1035         code_size output variable.
1036
1037         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
1038         mono_get_lmf_addr.
1039         
1040 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1041
1042         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
1043         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
1044         (mono_arch_cpu_enumerate_simd_versions): Ditto.
1045
1046 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1047
1048         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
1049         apple assembler.
1050
1051 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1052
1053         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
1054
1055 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1056
1057         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
1058
1059 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
1060
1061         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
1062
1063 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1064
1065         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
1066         line number support works with eglib.
1067
1068 2010-04-27  Miguel de Icaza  <miguel@novell.com>
1069
1070         * driver.c, mini.c: Since linking with LLVM makes the default Mono
1071         dirty an extra 70kb pages on startup we are now going to choose a
1072         different strategy: ship mono and mono-llvm binaries, with the
1073         second being the one that links with LLVM and defaults to LLVM
1074         being enabled.
1075
1076 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1077
1078         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
1079         Implement full-aot support on x86.
1080
1081         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
1082         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
1083         the first register returned by get_global_int_regs ().
1084
1085         * cpu-x86.md: Fix the length of insertx_u1_slow.
1086
1087         * iltests.il.in: Disable tail call tests when running with full-aot.
1088
1089 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
1090
1091         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
1092
1093 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1094
1095         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
1096         in the initializer, because it's non-constant.
1097
1098 2010-04-23  Miguel de Icaza  <miguel@novell.com>
1099
1100         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
1101         of LLVM on by default.   Used for buildbots and other setups.
1102
1103 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
1104
1105         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
1106
1107 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
1108
1109         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
1110         initonly static fields when using moving GC.
1111
1112         Contributed under MIT/X11 license.
1113
1114 2010-04-23  Geoff Norton  <gnorton@novell.com>
1115
1116         * mini-amd64.h: Darwin x86_64 support.
1117
1118 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
1119
1120         * exceptions-arm.c: Remove platform checks in favor of configure checks.
1121
1122 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
1123
1124         * exceptions-arm.c: Add Android support for sigcontext structure.
1125
1126 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1127
1128         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
1129         wrappers correctly now that their wrapper info is NULL.
1130
1131 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1132
1133         * mini.c (mono_jit_compile_method_inner): Avoid calling
1134         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
1135
1136 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1137
1138         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
1139         so the latter can be #ifndef DISABLE_JIT-ed.
1140
1141         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
1142
1143 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1144
1145         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
1146
1147 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1148
1149         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
1150         stack.
1151
1152 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
1153
1154         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
1155         calling mono_class_num_methods (). Fixes #592244.
1156
1157 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1158
1159         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
1160
1161         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
1162
1163 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1164
1165         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
1166         version.
1167         * (handle_alloc): Ditto.
1168         (mono_method_to_ir): Remove the constrained call restriction added by a previous
1169         change, its not needed anymore.
1170
1171 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
1172
1173         * mini-posix.c (sigusr1_signal_handler): Fix build on
1174         non x86/amd64 systems.
1175
1176 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1177
1178         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
1179         calls where the constrained class needs a context. Fixes #595863.
1180
1181         * iltests.il.in: Add a test.
1182
1183 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1184
1185         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
1186         2.6/SVN seems to have broken support for them.
1187
1188 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1189
1190         * mini-llvm.c: Fix support for LLVM 2.6.
1191
1192 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
1193
1194         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
1195         MonoInternalThread belonging to the thread.
1196
1197 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
1198
1199         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
1200         unsafe optimization that will remove bound checks.
1201
1202 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
1203
1204         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
1205         CompareExchange not to be inlined for I8.
1206
1207         Contributed under MIT/X11 license.
1208
1209 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1210
1211         * array.cs: Add tests for cast between primitive array types.
1212
1213 2010-04-07 Andreia Gaita  <avidigal@novell.com>
1214
1215         * Makefile.am: create a convenience library for moon to link with
1216
1217 2010-04-07 Paolo Molaro <lupus@ximian.com>
1218
1219         * method-to-ir.c: optimize array accesses from generic interfaces.
1220
1221 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1222
1223         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1224
1225 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1226
1227         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1228         of marshalbyref classes.
1229
1230         Fixes #515884.
1231
1232 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1233
1234         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1235         information.
1236
1237         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1238         information.
1239
1240         * mini.h: Increase AOT version.
1241
1242 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1243
1244         * mini-x86.h: Only enable soft debugger when using sigaction or on
1245         Windows. Fixes build on Haiku (lacks siginfo_t).
1246
1247         Code is contributed under MIT/X11 license.
1248
1249 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1250
1251         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1252         BeOS-style signal handlers.
1253
1254         Code is contributed under MIT/X11 license.
1255         
1256 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1257
1258         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1259
1260 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1261
1262         * mini-exceptions.c: Fix win32 build.
1263
1264 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1265
1266         * mini.c, driver.c: Call mono_gc_base_init() before
1267         mono_debug_init().
1268
1269 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1270
1271         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1272         call_method]): Delegate the actual work in security-core-clr.c
1273         to ease code sharing.
1274
1275 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1276
1277         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1278         float conv.ovf.un opcodes are encountered, instead of asserting later.
1279         Fixes #566296.
1280
1281 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1282
1283         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1284
1285         * iltests.il.in: Add a test.
1286
1287 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1288
1289         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1290         large. Fixes #567040.
1291
1292         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1293
1294 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1295
1296         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1297         #592711.
1298
1299 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1300
1301         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1302         mono_create_handler_block_trampoline with the proper #ifdef so that it
1303         compiles on amd64.
1304
1305 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1306
1307         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1308         allows to select if it's new or old context that is passed to 
1309         the callback.
1310
1311         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1312         case when executing a guarded handler from the EH machinery.
1313
1314         * mini-exceptions.c (mono_install_handler_block_guard): New function
1315         responsible for checking for handler blocks, installing the guard and
1316         clearing abort state.
1317
1318         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1319         to check for handler blocks and skip interruption logic if one was found.
1320
1321         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1322         by the handler block guard trampoline. Resumes interruption by raising the
1323         pending ThreadAbortException.
1324
1325         * mini.c (create_jit_info): Calculate the end address of a finally block.
1326
1327         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1328         of a finally block to a specified address and return the old one.
1329
1330         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1331         trampoline patches the original return address and calls the trampoline function.
1332
1333 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1334
1335         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1336
1337         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1338         does the patching if the callee is in the same domain.
1339
1340         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1341         of mono_arch_patch_plt_entry ().
1342
1343 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1344
1345         * mini.c (create_jit_info): Fix try block hole length encoding.
1346
1347 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1348
1349         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1350         duplicate information and print offsets instead of absolute addresses.
1351
1352 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1353
1354         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1355         event is sent. Fixes #591733.
1356
1357 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1358
1359         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1360         OpenBSD.
1361
1362 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1363
1364         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1365         thread_to_tls hash table.
1366
1367         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1368         section. Fixes #591000.
1369
1370 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1371
1372         * Makefile.am (version.h): Check for pure .git directory only,
1373         fixes SVN revision when using git without git-svn.
1374
1375         Contributed under MIT/X11 license.
1376
1377 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1378
1379         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1380
1381 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1382
1383         * basic-simd.cs: Test for vector x scalar binary operators.
1384
1385 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1386
1387         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1388         intrinsics with expanded scalar arguments.
1389
1390 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1391
1392         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1393         don't have an exception class, so don't decode it. This would crash
1394         with filter clauses.
1395
1396 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1397
1398         Make sure that trunk builds with DISABLE_JIT, an update to the
1399         PlayStation 3 port.
1400         
1401         * mini.c (mini_get_shared_method): this code seems to be necessary
1402         regardless of whether DISABLE_JIT has been defined.
1403
1404         (mono_jit_compile_method_inner): it seems that this method is
1405         required even in full AOT mode, so ifdef out only the pieces that
1406         try to genrate code (the body of code that applies patches to the
1407         code).  
1408
1409         (mini_method_compile): do not compile when using DISABLE_JIT.
1410
1411         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1412         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1413         compile when DISABLE_JIT is set.
1414
1415 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1416
1417         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1418         arch really supports it.
1419
1420 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1421
1422         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1423
1424 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1425
1426         * exceptions-s390x.c: Add support for
1427         mono_arch_get_throw_corlib_exception and fix throw by name.
1428
1429         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1430         logic (especially for varargs); Correct localloc sizing; Add
1431         mono_arch_get_this_arg_from_call and
1432         mono_arch_get_this_arg_from_call.
1433
1434         * mini-s390x.h: Add support for facility list extraction;
1435         Correct/update MONO_ARCH_xxx settings.
1436
1437         * mini-s390.c: Minor corrections to instruction output for
1438         varargs. No IMT implementation - I think it's time to deprecate
1439         s390 and just leave s390x.
1440
1441         * tramp-s390x.c: Correct creation of trampoline instruction
1442
1443
1444         * cpu-s390x.md: Update some instruction lengths
1445
1446 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1447
1448         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1449         can be hit with partial sharing.
1450
1451         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1452         in non-shared classes correctly.
1453         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1454         Turn on partial sharing.
1455
1456 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1457
1458         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1459         by mistake.
1460
1461 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1462
1463         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1464         mono_method_signature ().
1465
1466         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1467
1468         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1469         error checking, so later calls do not need error checking.
1470
1471 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1472
1473         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1474
1475         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1476
1477 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1478
1479         * mini-exceptions.c (mono_handle_exception_internal): Don't
1480         check try_end for archs different than s390. 
1481
1482         * mini.c (create_jit_info): Don't crash if the finallt block is the
1483         last one.
1484
1485 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1486
1487         * driver.c (mono_main): Don't free global codeman under linux since
1488         glic now peeks at code on stack for more archs than just amd64.
1489
1490 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1491
1492         * mini.c, method-to-ir.c: changes to support compressed interface
1493         bitmaps.
1494
1495 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1496
1497         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1498         Use sigaction on OpenBSD too.
1499
1500 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1501
1502         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1503
1504 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1505
1506         * debugger-agent.c: #include sys/select.h for fd_set.
1507
1508         Code is contributed under MIT/X11 license.
1509
1510 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1511
1512         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1513         (openbsd+amd64 ?).
1514
1515 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1516
1517         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1518         some large methods with lots of exception handlers. Fixes #440924.
1519
1520 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1521
1522         * method-to-ir.c: remove code duplication for interface checks.
1523
1524 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1525
1526         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1527         (assembly_unload): Clear all event requests referencing the to-be unloaded
1528         assembly.
1529
1530
1531 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1532
1533         * mini.h, mini-exceptions.c: restore the state of the stack
1534         guard page permissions.
1535
1536 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1537
1538         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1539         call site patching code, it doesn't appear to be needed.
1540
1541 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1542
1543         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1544         sharing generic methods whose type arguments are a mix of reference and
1545         non-reference types. Not yet turned on.
1546
1547         * mini.c (mini_get_shared_method): New helper function to return
1548         the method which will be compiled/registered in the JIT tables when doing
1549         generic sharing.
1550         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1551         use mini_get_shared_method ().
1552
1553         * mini.c (mini_method_compile): Register the same method which is compiled when
1554         doing generic sharing.
1555
1556         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1557
1558         * generics.cs: Add partial sharing tests.
1559
1560 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1561
1562         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1563                    Add an enum value that or's all possable values together. Add an enum value
1564                    that marks the end of the used bit indexes.
1565
1566         * mini-amd64.c : Make changes to match the changes in mini.h 
1567
1568         * mini-x86.c : Make changes to match the changes in mini.h
1569
1570         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1571                    simd_version to support more simd versions. Changed the name of
1572                    simd_version to simd_version_flags to make it more intuitive that
1573                    it now contains bit flags. Reordered the *_intrinsics arrays to
1574                    match the changes above. Changed emit_intrinsics() to use the new
1575                    setup mentioned above.
1576
1577         Code is contributed under MIT/X11 license.
1578
1579 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1580
1581         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1582         remaining archs. Alpha and hppa maintainers, please stand up.
1583
1584 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1585
1586         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1587         is needed even when fail_tramp!=NULL.
1588
1589 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1590
1591         * debugger-agent.c (insert_breakpoint): Write a log message.
1592
1593 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1594
1595         * iltests.il.in: Add a few tests for LEAVE going over multiple
1596         finally clauses.
1597
1598 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1599
1600          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1601
1602 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1603
1604         * mini.h (MonoBasicBlock): Add native_length field.
1605         * mini.h (MonoCompile): Add try_block_holes field.
1606         * mini.h (MonoInst): Add exception_clause pointer to
1607         the data union.
1608
1609         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1610         * mini.c (mono_cfg_add_try_hole): New function to register possible
1611         holes in try blocks.
1612         * mini.c (create_jit_info): Fill in the holes information.
1613
1614         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1615         by a try block.
1616
1617         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1618
1619 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1620
1621         * jit-icalls.c: adjusted for the array API changes.
1622
1623 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1624
1625         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1626
1627 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1628
1629         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1630         the 'pending' flag. This fixes support for appdomains too.
1631
1632
1633 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1634
1635         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1636
1637 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1638
1639         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1640         when using LLVM, LLVM generates it itself when needed.
1641
1642         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1643
1644         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1645         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1646         OP_ANDNPS/OP_ANDNPD.
1647
1648 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1649
1650         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1651         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1652         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1653
1654 2010-03-11  Martin Baulig  <martin@ximian.com>
1655
1656         * debugger-agent.c (type_commands): Add NULL check to
1657         `CMD_TYPE_GET_SOURCE_FILES'.
1658
1659 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1660
1661         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1662
1663 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1664
1665         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1666         #586664.
1667
1668         * iltests.il.in: Add a test.
1669
1670 2010-03-05  Martin Baulig  <martin@ximian.com>
1671
1672         Add support for aborting invocations.
1673
1674         * debugger-agent.c
1675         (InvokeData): Added `InvokeData *last_invoke'.
1676         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1677         added a new `invoke' field to keep the `InvokeData *' throughout
1678         the invocation.
1679         (ErrorCode): Added `ERR_NO_INVOCATION'.
1680         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1681         (mono_debugger_agent_handle_exception): Don't report any exception
1682         if an abort was requested.
1683         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1684         a thread abort if necessary.
1685         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1686
1687 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1688
1689         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1690         so we can release the whole list and not just the first one. Free
1691         it in more places as well.
1692
1693 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1694
1695         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1696
1697 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1698
1699         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1700
1701 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1702
1703         * driver.c: report also other misc build options.
1704
1705 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1706
1707         * method-to-ir.c: Generate better code for the NewObject
1708         intrinsic.
1709         
1710 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1711
1712         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1713         is disabled. Fixes #582322.
1714
1715         * iltests.il.in: Add a test.
1716
1717 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1718
1719         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1720         the handling of obj->synchronization == null and owner != current thread to
1721         mono_monitor_exit ().
1722
1723         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1724
1725
1726 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1727
1728         * mini.c: change the way emulated opcode info is stored and save about
1729         4 KB of runtime memory.
1730
1731 2010-03-04  David S. Miller  <davem@davemloft.net>
1732
1733        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1734        that don't provide the siginfo in the second signal handler argument
1735        are buggy, and this has been fixed for years.
1736        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1737        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1738
1739 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1740
1741         * aot-runtime.c (find_symbol): Fix a leak.
1742         (decode_patch): Ditto.
1743
1744 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1745
1746         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1747
1748 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1749
1750         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1751
1752 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1753
1754         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1755
1756 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1757
1758         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1759         to check for errors, it's enough to create the metadata open.
1760
1761         Fixes #562150
1762
1763 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1764
1765         * trace.c|h:
1766         * mini-exceptions.c: Add support for printing stack traces when handling
1767         exceptions, and when printing exceptions thrown while tracing also print
1768         the exception message.
1769
1770 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1771
1772         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1773         since the exclude token is a valid string character.
1774
1775 2010-03-02  Levi Bard  <levi@unity3d.com>
1776
1777         * debugger-agent.c: Invalidate thread stacks on domain unload.
1778
1779 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1780
1781         * method-to-ir.c: Emit dummy_use for stored reference after write
1782         barriers to make sure the object is pinned if the GC interrupts
1783         before the write barrier is done.
1784
1785 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1786
1787         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1788
1789 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1790
1791         * debugger-agent.c: Add a log message printing the protocol version.
1792
1793 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1794
1795         * debugger-agent.c: Add a new command to communicate the protocol version used
1796         by the client. This could be used to allow newer runtimes to communicate with
1797         older clients.
1798
1799 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1800
1801         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1802
1803 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1804
1805         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1806         type.
1807
1808 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1809
1810         * mini-arm.c: make the arm cpu arch configurable with the
1811         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1812         Bug #584198.
1813
1814 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1815
1816         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1817         support for the perf tool on Linux.
1818
1819 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1820
1821         * method-to-ir.c: make string.InsertenalSetChar() specialization
1822         effective.
1823
1824 2010-03-01  Robert Jordan  <robertj@gmx.net>
1825
1826         * Makefile.am: fix the non-static build.
1827
1828 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1829
1830         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1831         here.
1832
1833 2010-02-26  Robert Jordan  <robertj@gmx.net>
1834
1835         * tasklets.c (continuation_store): Return from an error condition
1836         immediately.
1837
1838 2010-02-26  Martin Baulig  <martin@ximian.com>
1839
1840         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1841
1842         * debug-mini.c
1843         (MonoDebuggerThreadInfo): Added `internal_flags'.
1844         (MonoDebuggerInternalThreadFlags): New enum.
1845         (_mono_debugger_throw_exception): Don't signal the debugger if a
1846         type abort was requested.
1847         (_mono_debugger_unhandled_exception): Likewise.
1848         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1849         (mono_debugger_runtime_invoke): If the debugger requested a thread
1850         abort during the invocation, reset it here.
1851
1852 2010-02-26  Martin Baulig  <martin@ximian.com>
1853
1854         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1855         instead of `MonoThread *'.
1856
1857 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1858
1859         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1860         code offsets table, as it is mostly sorted.
1861
1862 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1863
1864         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1865         Fixes #582991.
1866
1867 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1868
1869         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1870
1871 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1872
1873         * Makefile.am: build the new ABI version of the libmono library.
1874         * debugger-agent.c, mini.c: fix warnings with the new API.
1875         * jit.h: don't depend on glib.h being included.
1876
1877 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1878
1879         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1880
1881 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1882
1883         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1884         ThreadStatic variables.
1885
1886 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1887
1888         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1889         data is not freed yet. Fixes #582460.
1890
1891 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1892
1893         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1894         event requests. Bump protocol minor version.
1895
1896 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1897
1898         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1899
1900 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1901
1902         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1903         #581950.
1904
1905         * iltests.il.in: Add a test.
1906
1907 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1908
1909         * mini.c (inline_method): Check for loader errors.
1910
1911 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1912
1913         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1914         instead of mono_method_get_header as it doesn't decode locals
1915         so the called method can have unresolved dependencies that will only
1916         be satisfied after the current method is JIT'd.
1917
1918         Fixes #550968.
1919
1920 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1921
1922         * basic.cs (test_0_div_opt): Speed this up a bit.
1923
1924 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1925
1926         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1927
1928         * mini.c (mono_jit_create_remoting_trampoline): Call
1929         mono_create_specific_trampoline () instead of
1930         mono_arch_create_specific_trampoline ().
1931
1932         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1933
1934 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1935
1936         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1937         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1938
1939         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1940
1941         * mini-amd64.c: Fix DISABLE_JIT support.
1942
1943 2010-02-20  Geoff Norton  <gnorton@novell.com>
1944
1945         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1946
1947 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1948
1949         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1950         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1951         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1952         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1953         handle_exception.
1954
1955 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1956
1957         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1958         edx/ecx too. This is needed to support OP_SEQ_POINT.
1959
1960 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1961
1962         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1963
1964         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1965
1966 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1967
1968         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1969         LLVM+AOT+exceptions, not enabled yet.
1970
1971 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1972
1973         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1974
1975 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1976
1977         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1978         xdebug info for these.
1979
1980         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1981         in a few places.
1982
1983         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1984         not used yet.
1985
1986 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1987
1988         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1989
1990 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1991
1992         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1993         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1994
1995         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1996         for mtouch.
1997
1998 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1999
2000         * debugger-agent.c: handle incomplete reads and EINTR in
2001         recv()/send(). This could have been causing random
2002         disconnections.
2003
2004 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
2005
2006         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
2007         points.
2008
2009         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
2010         so they have small offsets. Fixes #566311.
2011
2012 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
2013
2014         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
2015
2016 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
2017
2018         * mini-amd64.c: Remove the special casing of byref in a few places now that
2019         mini_type_get_underlying_type () handles it.
2020
2021         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
2022         by returning native int. Fixes #577984.
2023
2024 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
2025
2026         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
2027         a macro.
2028
2029         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
2030         of putting the clause itself.
2031
2032         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
2033
2034 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
2035
2036         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
2037         might be unaligned.
2038
2039 2010-02-10  Geoff Norton  <gnorton@novell.com>
2040
2041         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
2042
2043 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2044
2045         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
2046         llvm methods too.
2047
2048         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
2049         it is not an LLVM generated symbol.
2050
2051         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
2052
2053         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
2054         implementation in gshared mode because it causes regressions.
2055
2056         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
2057
2058         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
2059         should be done by the caller.
2060
2061         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
2062
2063         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
2064
2065         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
2066         since mono_jit_info_table_find () doesn't do it anymore.
2067
2068         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
2069         instead of mono_jit_info_table_find ().
2070
2071 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2072
2073         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
2074
2075         * aot-compiler.c (encode_method_ref): Update after the removal of
2076         mono_gc_get_managed_allocator_type ().
2077
2078         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
2079         Fixes #564538.
2080
2081 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
2082
2083         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
2084         generic params as well.
2085         (handle_isinst): Ditto.
2086
2087         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
2088         instead of always calling an icall.
2089
2090         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
2091         computing the size of the got.
2092
2093         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
2094         when using LLVM. Instead of emitting it as an LLVM method, emit it using
2095         the assembly directive '.set' so it points to the first LLVM emitted method.
2096
2097 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2098
2099         * mini.c (mini_method_verify): Report the method which failed to verify.
2100
2101 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2102
2103         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
2104         to avoid JIT'ng dead basic blocks. This is the same behavior as the
2105         runtime MS verifier.
2106
2107 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2108
2109         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
2110         #561962.
2111
2112 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2113
2114         * mini-llvm.c: Init the jit module only when first JITting.
2115
2116         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
2117
2118         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
2119
2120         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
2121         replaced with the real got.
2122
2123         * debugger-agent.c (type_commands): Return the enumness if the type as well.
2124
2125         * image-writer.c: Reduce the amount of #ifdefs a bit.
2126
2127         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
2128         llvm on darwin/arm.
2129
2130         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
2131
2132         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
2133         global.
2134
2135 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2136
2137         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
2138         (mono_llvm_emit_method): Fix unaligned stores too.
2139
2140         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
2141         so async stack walks don't crash.
2142
2143 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2144
2145         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
2146         was not patched if the callee needed an rgctx trampoline.
2147
2148 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2149
2150         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
2151         vtable address in AOT code.
2152
2153 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2154
2155         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
2156         MonoInst's.
2157
2158 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
2159
2160         * genmdesc.pl: remove dependency on external cpp.
2161
2162 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2163
2164         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
2165         using LLVM, its not needed, and abcrem can't handle it.
2166
2167 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
2168
2169         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
2170         it easier to group instructions and reduce duplication.
2171
2172 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2173
2174         * decompose.c: Move the array/soft float decompose routines here from
2175         method-to-ir.c.
2176
2177         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
2178
2179 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
2180
2181         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
2182         to tell LLVM that the got is constant, not used yet.
2183
2184         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
2185
2186 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2187
2188         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
2189         managed wrappers.
2190
2191 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2192
2193         * aot-compiler.c (add_wrappers): Commit the hack which generates
2194         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
2195         custom attribute.
2196
2197 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2198
2199         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
2200         a fault, only used by the LLVM backend.
2201
2202         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
2203         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
2204
2205         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
2206         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
2207
2208         * mini-llvm.c: Only generate volatile loads from load instructions which have
2209         the MONO_INST_FAULT flag set.
2210
2211 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2212
2213         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
2214         64 bit platforms.
2215
2216 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2217
2218         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
2219         sequence points. Fixes #571236.
2220
2221 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2222
2223         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2224         end of the appdomain unload process, after assemblies have been unloaded.
2225         Fixes #574842.
2226
2227 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2228
2229         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2230         works.
2231
2232         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2233         Fixes #573988.
2234
2235 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2236
2237         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2238
2239 2010-01-26  Geoff Norton  <gnorton@novell.com>
2240
2241         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2242         with struct marshalability.
2243
2244 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2245
2246         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2247         it supports class names as well.
2248
2249         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2250         needed by the GC map code.
2251
2252         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2253         flags if needed.
2254
2255         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2256         if cfg->init_ref_vars is set.
2257
2258         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2259         cfg->disable_initlocals_op_refs is set.
2260
2261         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2262         using liveness info if cfg->compute_precise_live_ranges is set.
2263
2264         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2265         volatile variables correctly. Add comments about the live ranges. Not enabled
2266         yet.
2267
2268 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2269
2270         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2271         0x2a into them in method prologs.
2272
2273         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2274
2275 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2276
2277         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2278         classes, since llvm is compiled with -fno-rtti.
2279
2280         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2281
2282         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2283         llvm does not require it.
2284
2285         * aot-runtime.c (load_method): Print the full name of the last aot method.
2286
2287 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2288
2289         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2290         thread has not fully started yet.
2291
2292 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2293
2294         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2295
2296 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2297
2298         * driver.c: Do not abort if LLVM is not supported, print a
2299         warning and add the information to the Mono JIT information.
2300
2301 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2302
2303         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2304         using explicit null checks.
2305
2306 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2307
2308         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2309         related code.
2310
2311         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2312         () in one place.
2313         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2314         its no longer needed.
2315
2316         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2317
2318         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2319         define for platforms still using it (s390). Get rid of the
2320         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2321
2322         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2323         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2324
2325         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2326         the caller pushed the arguments.
2327
2328         * mini-llvm.c: Enable throwing exceptions on x86.
2329
2330         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2331         "Thread (nil) may have been prematurely finalized" messages if this is called
2332         on a thread not registered with the runtime.
2333
2334         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2335
2336 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2337
2338         * jit-icalls.c (mono_array_new_3): New jit icall.
2339
2340         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2341
2342         * arrays.cs: Add a test for 3 dimensional arrays.
2343
2344 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2345
2346         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2347         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2348         used.
2349
2350         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2351         thrown on x86.
2352
2353         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2354
2355         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2356
2357         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2358
2359 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2360
2361         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2362           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2363
2364         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2365
2366         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2367
2368         Code is contributed under MIT/X11 license.
2369
2370 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2371
2372         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2373
2374         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2375
2376         * mini.c (mini_method_compile): Set the new flag when running under the
2377         debugger.
2378
2379 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2380
2381         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2382         a ref/noref value + a global pin flag, so parts of stack frames can still be
2383         precisely marked even if they include stuff which needs pinning. Improve logging.
2384         Fix many bugs. Not enabled yet.
2385
2386         * gc-test.cs: Add a few tests.
2387
2388         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2389         the normal -v options. Avoid propagating liveness information through bblocks
2390         which end with a NOT_REACHED opcode.
2391
2392         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2393         after cfg has been freed.
2394
2395 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2396
2397         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2398         if a clause is skipped because it uses the exception object, since it could
2399         have caught the exception.
2400
2401         * exceptions.cs: Add a test.
2402
2403 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2404
2405        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2406
2407         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2408         ICollection<T> wrappers.
2409
2410 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2411
2412         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2413
2414 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2415
2416         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2417         NOMAP32BIT or optimize_for_xen is set.
2418
2419 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2420
2421         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2422         mono_metadata_str_hash () instead.
2423
2424 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2425
2426         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2427         sizeof (void*).
2428
2429         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2430
2431 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2432
2433         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2434         flag is set.
2435
2436         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2437         throwing code correctly.
2438
2439         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2440
2441 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2442
2443         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2444         ftnptrs created by us, handle RGCTX_FETCH correctly.
2445         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2446
2447         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2448         ftnptr added by mono_aot_get_named_code ().
2449
2450 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2451
2452         * mini-arm.c: Fix a few LLVM problems.
2453
2454         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2455
2456 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2457
2458         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2459         AOT compiling.
2460
2461 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2462
2463         * jit.h, method-to-ir.c: added ability to set the policy for
2464         inserting breakpoints from the break IL instruction or the
2465         Debugger.Break () API call.
2466
2467 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2468
2469         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2470         assemblies need to be eagerly loaded.
2471
2472 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2473
2474         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2475
2476 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2477
2478         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2479         an argument which matches any exception.
2480
2481 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2482
2483         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2484         optimization if the called method is gshared and marshalbyref, since gshared
2485         methods can' have wrappers. Fixes #569390.
2486
2487         * generics.cs: Add a test.
2488
2489 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2490
2491         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2492         callable from gdb.
2493
2494 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2495
2496         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2497
2498 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2499
2500         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2501         since it is not supported in win2000.
2502
2503 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2504
2505         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2506         error if loading an assembly fails.
2507         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2508
2509         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2510         if exists.
2511
2512         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2513         compiled methods.
2514
2515         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2516
2517         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2518         is not supported yet.
2519
2520         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2521
2522 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2523
2524         * method-to-ir.c: All types with variant arguments must fallback to the
2525         slow path. This makes cast of variant delegates work.
2526
2527         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2528         argument that is set to TRUE is the returned vtable slot is for a variant
2529         interface. Changed a g_print + g_assert_not_reached to a g_error.
2530
2531         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2532         a similar fashion of generic virtual methods.
2533
2534 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2535
2536         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2537         when cfg is null.
2538
2539         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2540         method using a variance aware function.
2541
2542         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2543
2544 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2545
2546         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2547         do an icall for now.
2548
2549 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2550
2551         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2552         If LLVM decides to set the code model to Large, reset it to Default.
2553
2554 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2555
2556         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2557         stripped binaries as well.
2558
2559 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2560
2561         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2562         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2563
2564         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2565         reg.
2566
2567 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2568
2569         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2570         separate function.
2571
2572         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2573         as the type info to llvm.eh.selector.
2574         (exception_cb): Use the type info for filling out some fields of
2575         MonoJitExceptionInfo like the flags and the exception class. This is needed
2576         because the LLVM produced exception handling clauses might not match the original
2577         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2578
2579         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2580         separate function. Add an extra argument which returns the type infos
2581         corresponding to the exception clauses.
2582
2583         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2584         exception handling clauses.
2585
2586 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2587
2588         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2589         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2590         to fix an AOT case.
2591
2592 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2593
2594         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2595         internal assembly.
2596
2597 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2598
2599         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2600         llvm code.
2601
2602 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2603
2604         * mini.c (mini_method_compile): Verify the method before calling
2605         mono_compile_create_vars as this might crash since it uses method
2606         information.
2607
2608         Fixes #560196.
2609
2610 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2611
2612         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2613         one case if AOTing, since the class might not be a concrete class.
2614
2615 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2616
2617         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2618         functions which are now defined in mempool-internals.h.
2619
2620         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2621
2622         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2623
2624 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2625
2626         * mini.c:
2627         * method-to.ir.c:
2628         * mini-*.c: Properly handle generic enums.
2629
2630         Fixes #566294
2631
2632 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2633
2634         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2635         in a few more places.
2636
2637 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2638
2639         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2640         nullable parameters. Fixes #567351.
2641
2642 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2643
2644         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2645
2646 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2647
2648         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2649         mono_get_generic_context_from_code () call.
2650
2651         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2652
2653 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2654
2655         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2656         needed.
2657
2658 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2659
2660         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2661         mono_method_get_signature returns NULL. Fix #567084
2662
2663 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2664
2665         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2666         instead of once for each module.
2667
2668 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2669
2670         * debugger-agent.c (ss_start): Implement step over for the last sequence
2671         point in methods.
2672
2673         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2674         have the STEP_LOC flag set.
2675
2676         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2677         fails. Fixes #566689.
2678
2679 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2680
2681         * mini.c (mono_add_seq_point): New helper function.
2682         (mono_save_seq_point_info): New function to save sequence point info, extracted
2683         from mini_method_compile ().
2684
2685         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2686
2687         * mini.h (MonoSeqPointInfo): New structure containing information about
2688         the sequence points of a JITted method.
2689         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2690         'bucket' field.
2691
2692         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2693         point information is stored, use a MonoSeqPointInfo structure instead of a
2694         GPtrArray. For each seq point, compute a list of successor seq points.
2695
2696         * debugger-agent.c: Use the successor list to implement step-over more
2697         efficiently: instead of single stepping until a different line/IL offset is
2698         reached, place breakpoints into all successor seq points.
2699
2700         * mini.h: Bump AOT file format version.
2701
2702 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2703
2704         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2705
2706         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2707
2708 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2709
2710         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2711         build.
2712
2713 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2714
2715         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2716         alloca as g_malloc is not signal safe.
2717
2718 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2719
2720         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2721         VALGRIND_DISCARD_TRANSLATIONS.
2722
2723         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2724         checks, they are no longer needed.
2725
2726         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2727         a function into a sigctx which can handle function pointers.
2728
2729         * mini-ppc.c: Implement soft debugger support on ppc64.
2730
2731         * mini-ppc.c: Implement soft debugger support.
2732
2733 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2734
2735         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2736
2737 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2738
2739         * mini.c (mono_get_runtime_build_info): include Mono version in
2740         the returned value.
2741
2742         * driver.c (mono_main): VERSION is now included in the string
2743         returned from mono_get_runtime_build_info()
2744
2745 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2746
2747         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2748         signatures. Fixes #565143.
2749
2750         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2751
2752 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2753
2754         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2755
2756 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2757
2758         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2759         making max stack 10x smaller.
2760
2761 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2762
2763         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2764
2765 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2766
2767         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2768
2769 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2770
2771         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2772         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2773
2774         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2775
2776         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2777
2778         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2779
2780         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2781         the compilation.
2782
2783 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2784
2785         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2786         raise an invalid program exception.   
2787
2788         For other opcodes that we might not handle use a g_warning and
2789         raise the exception.   Beats termination.
2790
2791         Fixes #561724
2792
2793 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2794
2795         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2796
2797         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2798         by merging the LLVM and !MAP_32BIT cases.
2799
2800 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2801
2802         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2803         sigctx being passed in, as we have no CONTEXT available in the APC.
2804
2805         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2806         for now.
2807
2808         Code contributed under MIT/X11 license.
2809
2810 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2811
2812         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2813         in the LLVM backend on AMD64.
2814
2815         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2816         FDE.
2817
2818         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2819
2820         * mini-llvm.c: Export mono_personality for AOT.
2821
2822         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2823
2824         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2825         implicit exception can occur.
2826
2827         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2828         OP_IMPLICIT_EXCEPTION instruction.
2829
2830         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2831
2832         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2833
2834         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2835         inside a protected block.
2836
2837         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2838         trampolines doesn't include the argument.
2839
2840         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2841         trampolines on amd64.
2842
2843         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2844         of RDI.
2845
2846         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2847         disabled for methods with clauses.
2848
2849         * mini-llvm.c: Enable support for catch clauses.
2850
2851         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2852         end of an LLVM compiled finally clause.
2853         (mono_handle_exception_internal): Save the exception handling state in TLS
2854         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2855         resume unwinding from that point.
2856
2857         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2858         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2859         to obtain the addresses of the exception handling regions.
2860
2861         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2862         finally clauses are supported.
2863
2864         * mini.c (mini_method_compile): Add support for LLVM code with exception
2865         handlers.
2866
2867 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2868
2869         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2870         proper size.
2871
2872 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2873
2874         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2875         as a primitive type.
2876
2877 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2878
2879         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2880         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2881         #564000.
2882
2883 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2884
2885         * method-to-ir.c (mini_redirect_call): do not redirect the
2886         InternalAllocateStr internal call if string profiling is enabled.
2887
2888 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2889
2890         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2891         generic methods.
2892
2893         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2894         unwind.h header file.
2895
2896         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2897         newer valgrind versions seems to handle this fine.
2898
2899 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2900
2901         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2902         on the debugger thread.
2903
2904 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2905
2906         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2907
2908         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2909
2910         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2911
2912         * cpu-<ARCH>.md: Make call_handler clob:c.
2913
2914         * mini.c: Reenable SSA for methods with clauses.
2915
2916         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2917         as it causes failures on x86.
2918
2919 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2920
2921         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2922         returns NULL (e.g. a bad assembly).
2923
2924 2009-12-08  Geoff Norton  <gnorton@novell.com>
2925
2926         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2927         stepping out into native code.  There were issues with nested invokes
2928         like .cctors.
2929
2930 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2931
2932         * mini.c (mini_method_compile): Do the disable_llvm checks early
2933         and avoid the LLVM compile pass if the checks fail.
2934
2935         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2936
2937         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2938         LLVM optimizations don't try to remove them.
2939
2940         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2941         different file so the original remains.
2942
2943 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2944
2945         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2946
2947         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2948
2949         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2950         support for non-inline unwind descriptors.
2951
2952 2009-12-07  Geoff Norton  <gnorton@novell.com>
2953
2954         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2955         the interrupt_count slightly differently.  Native threads were never
2956         marked as resumed.
2957
2958 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2959
2960         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2961         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2962         yet generate this info.
2963
2964         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2965
2966         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2967         client can distinguish between intptrs and longs.
2968
2969 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2970
2971         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2972         blob.
2973
2974         * aot-runtime.c (load_function): Update after the change above.
2975
2976         * mini.h: Bump AOT file format version.
2977
2978         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2979         if the delegate class is dynamic.
2980
2981         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2982         in gshared code too using the new rgctx info type
2983         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2984
2985 2009-12-04  Geoff Norton  <gnorton@novell.com>
2986
2987         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2988         we need to track the original suspend count so the thread properly
2989         wakes up in resume_thread.
2990
2991 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2992
2993         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2994         code.
2995
2996         * generics.cs: Add a test.
2997
2998         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2999         is 0. Simplify a lot of code using this.
3000
3001         * mini-trampolines.c (mono_delegate_trampoline): Call
3002         mono_create_static_rgctx_trampoline () before saving the final address in
3003         delegate->method_code, to avoid calling it each time a delegate is first called.
3004
3005         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
3006         which need static rgctx trampolines.
3007
3008         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
3009         keyed on the method+addr pair, since addr could be either the method addr or
3010         an unbox trampoline in the AOT case. Fixes #560246.
3011
3012 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
3013
3014         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
3015         place it was called before too.
3016
3017 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
3018
3019         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
3020         if no security manager is present, to speed up the AOT case. Call
3021         mono_class_vtable () full with raise_on_error == TRUE instead.
3022
3023 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
3024
3025         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
3026         the local optimization passes can take its result into account. Fixes
3027         #559876.
3028
3029         * exceptions.cs: Add a test.
3030
3031 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
3032
3033         This patch is contributed under the terms of the MIT/X11 license
3034
3035         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
3036
3037 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
3038
3039         * mini.h (MonoInst): Remove unused 'ssa_op' field.
3040
3041         * debugger-agent.c: Rework the handling of stack traces of running threads to
3042         avoid crashes if compute_frames () tries to walk the stack of running thread.
3043
3044         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
3045
3046         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
3047
3048         * mini.h (StackFrameInfo): Add an 'lmf' field.
3049
3050 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
3051
3052         * debugger-agent.c (suspend_current): Always set really_suspended.
3053
3054         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
3055
3056         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
3057
3058 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
3059
3060         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
3061         really suspended.
3062
3063 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
3064
3065         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
3066
3067 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3068
3069         * mini-trampolines.c: Fix MSVC build.
3070
3071 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3072
3073         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
3074
3075 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
3076
3077         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
3078         the instruction following an OP_FCOMPARE is optimized away.
3079
3080 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
3081
3082         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
3083         emit_autoreg () into this arch-specific function.
3084
3085         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
3086         code, it is no longer needed.
3087
3088         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
3089
3090         * mini.h: Bump AOT file format version.
3091
3092         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
3093         using the sorted_code_offsets array, instead of reading it from the
3094         exception debug info.
3095         (load_method): Call mono_aot_find_jit_info instead of
3096         decode_exception_debug_info ().
3097
3098         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
3099         LLVM compiled as a flag.
3100
3101 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
3102
3103         * debugger-agent.c (resume_thread): Fix a warning.
3104
3105         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
3106         generated.
3107
3108 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3109
3110         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
3111         contents to MonoAotFileInfo.
3112
3113 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3114
3115         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
3116         Put all binary data into a giant blob, similarly to the way .net assemblies
3117         store binary data. Emit offset tables in a compact form to reduce their size.
3118
3119         * mini.h: Bump AOT file format version.
3120
3121         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
3122         places.
3123
3124         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
3125         avoid linear searches at runtime.
3126
3127         * aot-runtime.c (find_symbol): Update this to use the hash.
3128
3129         * mini.h: Bump AOT file format version.
3130
3131 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3132
3133         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
3134         container.
3135
3136         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
3137         too.
3138
3139         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
3140         the distribution of got slot types.
3141
3142         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
3143
3144         * method-to-ir.c: Add support for generating explicit null checks.
3145
3146 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
3147
3148         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
3149         on a random thread if possible.
3150
3151         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
3152         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
3153         correctly.
3154
3155         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
3156         regs. Pass the real size of the regs array to mono_unwind_frame ().
3157
3158         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
3159         ones instead.
3160
3161 2009-11-24  Geoff Norton  <gnorton@novell.com>
3162
3163         * mini-darwin.c: Work around apple bug rdar://7209349  See
3164         http://openradar.appspot.com/7209349 for details.  Synopsis,
3165         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
3166         never been initialized before.
3167
3168 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3169
3170         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
3171
3172         * mini-arm.c (mono_arm_thumb_supported): New helper function.
3173
3174 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3175
3176         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
3177         OP_SHL_IMM is not 32 bit.
3178
3179 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3180
3181         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
3182
3183 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3184
3185         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
3186         encountered.
3187
3188         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
3189         > 0 since some threads can resume if their resume_count is > 0.
3190         (invoke_method): Avoid reading freed memory.
3191
3192         * debugger-agent.c (process_suspend): Extract the suspend code from
3193         process_single_step_inner () to a separate function. Rework the code to prevent
3194         races between this function and thread interrupts.
3195
3196         * debugger-agent.c (suspend_current): Check the resume_count field instead
3197         of resume_one so suspends+resumes during single threaded invokes work
3198         correctly.
3199
3200 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3201
3202         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
3203         to make the generated code smaller.
3204
3205         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
3206         sequence generated by recent LLVM versions.
3207
3208         * mini-llvm.c: Add support for a few simple cases which weren't supported
3209         before.
3210
3211         * mini-trampolines.c (mono_magic_trampoline): Don't call
3212         mono_arch_get_vcall_slot () when llvm is enabled.
3213
3214         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
3215
3216         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
3217         into a new function called common_call_trampoline () which is used by the
3218         llvm vcall trampoline as well.
3219
3220         * debugger-agent.c: Implement single threaded invokes.
3221
3222         * debugger-agent.c: Revert change which broke the agent on linux.
3223
3224         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3225         #557606.
3226
3227         * generics.cs: Add a test.
3228
3229 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3230
3231         * debugger-agent.c: Fix the cygwin build.
3232
3233 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3234
3235         * cprop.c: Remove this unused file.
3236
3237 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3238
3239         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3240         #557262.
3241
3242         * basic.cs: Add a test.
3243
3244 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3245
3246         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3247         in one more place.
3248
3249 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3250
3251         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3252         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3253         it. Use this flag to control llvm related code paths instead of #ifdef
3254         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3255         AOT code.
3256
3257         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3258
3259         * mini.h: Bump AOT file format version.
3260
3261         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3262         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3263
3264         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3265         was used as an assembly filter.
3266
3267 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3268
3269         * unwind.c: Fix support for ppc.
3270
3271         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3272         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3273
3274 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3275
3276         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3277         port.
3278         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3279         added by the ps3 changes.
3280
3281 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3282
3283         * mini-gc.c: Resurrect this, so at least it compiles.
3284
3285         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3286
3287 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3288
3289         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3290         create_event_list () so assembly filters can be used.
3291
3292         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3293         from the LMF.
3294
3295 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3296
3297         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3298         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3299         is disabled.
3300
3301         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3302         classes for char/bool too.
3303
3304         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3305
3306         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3307         used.
3308
3309         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3310         Fix warnings.
3311
3312 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3313
3314         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3315         
3316         Code contributed under MIT/X11 license.
3317
3318 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3319
3320         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3321         threads in native code work.
3322
3323         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3324         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3325         version.
3326
3327 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3328
3329         * debugger-agent.c: Implementation for Windows platform.
3330
3331         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3332         primitives. Use SEH to implement breakpoints and single stepping.
3333
3334         * mini-x86.h: Enable soft debugger on Windows.
3335
3336         Code contributed under MIT/X11 license.
3337
3338 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3339
3340         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3341         under XEN. Fixes #522894.
3342
3343         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3344
3345         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3346         interface calls in LLVM AOT code.
3347
3348         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3349         is found.
3350
3351         * mini-llvm.c: Add support for OP_VPHI.
3352
3353         * objects.cs: Add a test.
3354
3355 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3356
3357         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3358         this is called on the debugger thread.
3359
3360 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3361
3362         * mini-llvm.c: Add soft-float support.
3363
3364         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3365         FCALL which returns an R4.
3366
3367         * driver.c (mono_main): Add a missing '\n'.
3368
3369         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3370         platforms which doesn't support the LLVM IMT trampoline.
3371
3372 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3373
3374         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3375
3376         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3377
3378         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3379         virtual calls.
3380
3381         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3382
3383 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3384
3385         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3386         Instead of emitting a method_order table, sort the contents of the code_offsets
3387         table and do a binary search in the sorted table. The previous approach doesn't
3388         work with LLVM which emits methods in a arbitrary order.
3389
3390         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3391         in the .eh_frame section in ELF files.
3392
3393         * mini.h: Bump corlib file format version.
3394
3395         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3396
3397         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3398         LDMIA->LDM macro name change.
3399
3400 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3401
3402         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3403         x86.
3404
3405         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3406         SVN.
3407
3408         * aot-compiler.c: Ditto.
3409
3410         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3411         &align to mini_type_stack_size_full ().
3412
3413         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3414
3415         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3416
3417 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3418
3419         * mini-arm.c: Compute the stack space used by arguments using
3420         mini_type_stack_size_full ().
3421
3422 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3423
3424         * optflags-def.h: Remove dead TREEPROP optimization.
3425
3426 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3427
3428         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3429
3430         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3431
3432 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3433
3434         * driver.c (mono_jit_parse_options): New public API function to parse options
3435         as done by the runtime executable.
3436
3437         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3438         when handling named arguments.
3439
3440 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3441
3442         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3443         for passing small vtypes in registers, make the CallInfo structures more
3444         similar to the code on the other platforms.
3445
3446         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3447         the code in the prolog requires it.
3448
3449 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3450
3451         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3452         (koush@koushikdutta.com).
3453
3454         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3455         where the thunk memory should be allocated from. Fixes appdomain unloading
3456         on arm.
3457
3458 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3459
3460         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3461         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3462
3463 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3464
3465         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3466         AOT, as it is not implemented yet.
3467
3468         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3469
3470 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3471
3472         * debugger-agent.c: Fix windows build.
3473
3474 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3475
3476         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3477         after the client connects/disconnects.
3478
3479         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3480         when an exception of a given type is thrown.
3481
3482         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3483         only on an uncaught exception.
3484
3485         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3486
3487         * debugger-agent.c: Add a 'launch' option.
3488
3489 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3490
3491         * debugger-agent.c: Add a 'timeout' option.
3492
3493 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3494
3495         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3496         the JDWP agent.
3497
3498 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3499
3500         * debugger-agent.c (set_breakpoint): Emit a log message.
3501
3502 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3503
3504         * mini-arm.c: Fix the arm build.
3505
3506 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3507
3508         * aot-compiler.c: don't leak the value returned from
3509         mono_type_full_name().
3510
3511 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3512
3513         * debugger-agent.c: defer including mono-mutex.h until we know the
3514         agent is supported.
3515
3516 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3517
3518         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3519         of pthreads directly.
3520
3521         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3522         exception handlers. Pass info argument.
3523
3524         * mini.h: Adjust signatures of soft debugger functions to pass void*
3525         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3526
3527         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3528         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3529         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3530         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3531
3532         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3533
3534         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3535         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3536         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3537         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3538
3539         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3540
3541         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3542
3543         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3544
3545         * mono-semaphore.h: Skeleton implementation for Windows.
3546
3547         Code contributed under MIT/X11 license.
3548
3549 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3550
3551         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3552
3553         Code contributed under MIT/X11 license.
3554
3555 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3556
3557         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3558
3559         Code contributed under MIT/X11 license.
3560
3561 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3562
3563         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3564         debug info to 100 because 10 still slows down gdb too much.
3565
3566         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3567         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3568         them in the wrappers.
3569
3570 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3571
3572         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3573
3574         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3575
3576         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3577         function mono_aot_get_array_helper_from_wrapper ().
3578
3579         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3580         array helper methods.
3581
3582 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3583
3584         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3585         the value was loaded from memory.
3586
3587         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3588         the value was loader from there.
3589
3590         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3591         without constant swizzle.
3592
3593 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3594
3595         * mini-amd64.c: Put soft debugger functions behind a
3596         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3597
3598         * mini-amd64.h: disable the soft debugger in windows.
3599
3600         Code contributed under MIT/X11 license.
3601
3602 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3603
3604         * mini-x86.c: Put soft debugger functions behind a
3605         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3606
3607         Code contributed under MIT/X11 license.
3608
3609 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3610
3611         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3612         to mono_arch_find_jit_info_ext.
3613
3614         Code contributed under MIT/X11 license.
3615
3616 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3617
3618         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3619
3620         * debugger-agent.c: Add support for filtering events by assemblies.
3621
3622         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3623         the agent is not enabled.
3624
3625 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3626
3627         * exceptions-x86.c: hopefully last change to fix the windows build.
3628         This one courtesy of Jonathan Chambers.
3629
3630 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3631
3632         * debugger-agent.c: remove unused function.
3633
3634 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3635
3636         * debugger-agent.c: add #ifdefs for a few header files.
3637         * mini-x86.h: disable the soft debugger in windows.
3638         Step 1 of 2 to make this compile on windows with gcc.
3639
3640 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3641
3642         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3643         as it breaks the build.
3644
3645 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3646
3647         Merge the soft debugger branch.
3648
3649         * debugger-agent.h debugger-agent.c: New files containing the soft
3650         mode debugger module.
3651
3652         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3653         at the appropriate locations.
3654
3655         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3656         opcode.
3657
3658         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3659         enable/disable single stepping.
3660
3661         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3662         which returns all information in a StackFrameInfo structure, and can handle the
3663         LMF frames added by the debugger.
3664
3665         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3666         about an LMF frame.
3667
3668         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3669         walker function which works on a specific thread and passes a StackFrameInfo
3670         structure to its callback.
3671
3672         * mini.c (mini_init): Initialize the debugger agent.
3673
3674         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3675
3676         * mini-ops.h: Add OP_SEQ_POINT opcode.
3677
3678         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3679         arguments to the debugger agent.
3680
3681 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3682
3683         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3684         speed things up.
3685
3686         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3687
3688         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3689
3690         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3691
3692         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3693         if needed.
3694         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3695         sets the IMT argument and makes a virtual call.
3696
3697         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3698
3699 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3700
3701         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3702         the windows build.
3703
3704 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3705
3706         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3707         runtime. Fixes #551228.
3708
3709 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3710
3711         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3712
3713         * basic.cs: Add a test.
3714
3715         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3716         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3717         CONSTRAINED. Fixes #550964.
3718
3719         * generics.cs: Add a test.
3720
3721 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3722
3723         * mini-posix.c (add_signal_handler): Use
3724         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3725
3726 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3727
3728         Contributed under the terms of the MIT/X11 license by
3729         Jerry Maine <crashfourit@gail.com>.
3730
3731         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3732         sse4a for simd intrinsics.
3733
3734         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3735         sse4a for simd intrinsics.
3736
3737 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3738
3739         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3740         instead of inst_p1 which is not the same on ILP32 platforms.
3741
3742 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3743
3744         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3745         not the mscorlib one before calling mono_get_lmf_addr.
3746
3747         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3748         of the ip to the LMF.
3749
3750         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3751         immediate in the op->op_imm optimization.
3752
3753         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3754         understand. VTypes now work, but are not abi compliant, as they are
3755         split into 4 byte parts instead of 8.
3756         (emit_memcpy): Fix the unrolled case to work on the PS3.
3757
3758         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3759
3760         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3761         the default when static linking.
3762
3763         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3764
3765         * aot-compiler.c: Add an autoreg option to automatically register
3766         statically linked aot modules using ELF .ctors.
3767
3768         * genmdesc.pl: Add __ppc64__ to allowed defines.
3769
3770 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3771
3772         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3773         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3774
3775 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3776
3777         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3778
3779 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3780
3781         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3782         which will contain the domain where the method was found.
3783
3784         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3785         mini_jit_info_table_find ().
3786
3787         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3788
3789         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3790
3791 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3792
3793         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3794         set, its not supported yet.
3795
3796 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3797
3798         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3799         iface wrapper is not found.
3800         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3801
3802 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3803
3804         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3805         which have a different name.
3806
3807         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3808         wrappers and Array.GetGenericValueImpl ().
3809
3810         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3811         because of the change above.
3812
3813         * generics.cs: Add a test for full aot + generic array ifaces.
3814
3815 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3816
3817         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3818         that hides the previous one.
3819
3820 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3821
3822         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3823         marshalled. Fixes #541623.
3824
3825 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3826
3827         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3828
3829 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3830
3831         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3832
3833 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3834
3835         * mini-posix.c (sigprof_signal_handler):
3836         Implemented support for building stat call chans in different ways.
3837
3838 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3839
3840         * mini-exceptions.c (mono_find_jit_info):
3841         Also check that a jit info has been found (fixes a profiler crash).
3842
3843 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3844
3845         * mini.c (mono_codegen):
3846         Call mono_profiler_code_buffer_new with correct code address.
3847
3848 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3849
3850         * driver.c (mono_main): Change the date in the copyright.
3851
3852 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3853
3854         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3855         allocator in shared generic code for open classes, because we
3856         can't get those classes' vtables.  We need to make managed
3857         allocators not depend on the vtable at compile-time to solve this.
3858
3859 2009-10-13  Martin Baulig  <martin@ximian.com>
3860
3861         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3862         `const guint8 *trampoline' argument; send both the old and the new
3863         notification.
3864
3865 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3866
3867         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3868         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3869         (can_marshal_struct): Skip structures with auto layout.
3870
3871         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3872
3873 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3874
3875         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3876         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3877         a variable to hold the stack slot used by the int<->float conversion opcodes.
3878
3879         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3880
3881 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3882
3883         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3884         when using full-aot.
3885
3886 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3887
3888         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3889         each instance of Comparer<T>.
3890
3891         * generics.cs: Add a new test.
3892
3893 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3894
3895         * driver.c (parse_debug_options): Add a 'gdb' option.
3896
3897         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3898
3899         * image-writer.c: Add support for emitting the image into a memory buffer.
3900
3901         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3902
3903         * aot-compiler.c: Add support for registering debug info with GDB using the
3904         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3905         MONO_XDEBUG to 'gdb'.
3906
3907 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3908
3909         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3910         gdb mode.
3911
3912 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3913
3914         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3915         can be used to set breakpoints in gdb.
3916
3917         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3918         segment to an absolute address.
3919
3920 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3921
3922         * method-to-ir.c: Use the managed array allocator method if
3923         available.
3924
3925 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3926
3927         * aot-compiler.c : Fix the MSVC builds
3928
3929         Code is contributed under MIT/X11 license.
3930
3931 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3932
3933         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3934         avoid registering 1 symbol file per method with gdb.
3935
3936 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3937
3938         * mini-sparc.c: Fix the handling of enums with base type long.
3939
3940         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3941
3942         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3943         instead of using type->data.klass as the later doesn't work with generics.
3944
3945 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3946
3947         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3948         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3949         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3950         works differently now and we don't handle it in the JIT anymore.
3951
3952         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3953         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3954         the Thread class split.
3955
3956 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3957
3958         * driver.c: Don't run tests with the obsolete treeprop optimization.
3959
3960         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3961         variable volatile. Fixes #541577.
3962
3963         * basic-calls.cs: Add a new test.
3964
3965         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3966
3967 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3968
3969         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3970         work/required with recent iphone sdk versions.
3971
3972         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3973         structures.
3974
3975         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3976         in the VCALL decomposition code.
3977
3978 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3979
3980         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3981
3982         * basic.cs: Add a test.
3983
3984         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3985         generic invokes.
3986
3987         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3988         searches all the domains of the current thread.
3989
3990         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3991
3992 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3993
3994         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3995         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3996
3997         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3998         for non-jit trampolines.
3999
4000         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
4001
4002         * aot-compiler.c (add_wrappers): Ditto.
4003
4004         * mini-arm.c: Implement support for passing vtypes and floats, and increase
4005         the size of the param area used by dyn_call to 6 which covers the majority of
4006         methods.
4007
4008         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
4009
4010         * mini-arm.c: Implement support for passing/receiving
4011         longs and receiving floats in the dyn_call code.
4012
4013         * mini-amd64.c: Implement support for receiving vtypes in registers in
4014         the dyn_call code.
4015
4016         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
4017         the dyn_call code.
4018
4019 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
4020
4021         * mini-arm.c (get_call_info): Return more precise information in
4022         ArgInfo->regtype.
4023         (dyn_call_supported): Use the information in CallInfo.
4024
4025         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
4026
4027         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
4028         code.
4029
4030         * mini-arm.c: Update after the dyn_call api changes.
4031
4032         * mini.c (mini_create_jit_domain_info): Register a destructor function
4033         for the runtime_invoke_hash.
4034
4035         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
4036         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
4037         this function.
4038         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
4039         (dyn_call_supported): Simplify this by using get_call_info ().
4040         (mono_arch_dyn_call_free): New destructor function.
4041
4042         * generics.cs: Remove a printf.
4043
4044         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
4045
4046         * mini-arm.c: Add support for enum return values and passing a few arguments
4047         on the stack.
4048         
4049         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
4050         dyn invoke.
4051
4052         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
4053
4054         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
4055         the dynamic invoke wrappers.
4056
4057         * mini-arm.c: Implement OP_DYN_CALL for arm.
4058
4059         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
4060         supported by the dynamic runtime invoke wrapper.
4061
4062         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
4063         runtime invoke wrapper.
4064
4065         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
4066         if possible when running with full-aot.
4067
4068         * mini-ops.h: Add OP_DYN_CALL opcode.
4069
4070         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
4071         with dynamic arguments lists similar to libffi.
4072
4073 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
4074
4075         * method-to-ir.c: Fix the previous change on 64 bit platforms.
4076         
4077         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
4078         to NEWARR.
4079
4080         * iltests.il.in: Add a new test.
4081         
4082 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
4083
4084         * aot-compiler.c (add_generic_instances): Add more instances of
4085         GenericEqualityComparer.
4086
4087 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4088
4089         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
4090
4091 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4092
4093         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
4094         comments on some functions that now can fail.
4095
4096 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
4097
4098         * Makefile.am: Add Info.plist to EXTRA_DIST
4099
4100 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4101
4102         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
4103         static synchronized wrappers. Fixes #539500.
4104
4105 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
4106
4107         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
4108         properly.
4109
4110 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4111
4112         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
4113         lmf before calling filter clauses as well. Fixes #539550.
4114
4115         * exceptions.cs: Add a test.
4116         
4117 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
4118
4119         * aot-compiler.c (add_generic_class): Add instances of
4120         Array.GetGenericValueImpl as well.
4121
4122         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
4123         can be tested too.
4124
4125         * generics.cs: Add a fullaot linq test.
4126
4127 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
4128
4129         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
4130         reg r1 on arm.
4131
4132 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4133
4134         * mini-trampolines.c (mono_delegate_trampoline) : Call
4135           mono_cominterop_get_invoke if the delegate target object
4136           is a COM object.
4137
4138         Code is contributed under MIT/X11 license.
4139
4140 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
4141
4142         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
4143         internal call is defined outside platform code. Reduce code 
4144         duplication with existing [Method|Field]AccessException
4145
4146 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4147
4148         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
4149         if the return value is a small struct passed on regs.
4150
4151 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
4152
4153         * cpu-arm.md mini-arm.c: Remove unused opcodes.
4154
4155         * mini-codegen.c: Enable the cpu description validation for arm.
4156
4157 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
4158
4159         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
4160         test which depends on structs to objects.cs.
4161         
4162         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
4163         require object model related stuff working.
4164
4165         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
4166
4167         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
4168
4169         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
4170         against the instruction metadata in mini-ops.h. amd64 only for now.
4171
4172         * mini-ops.h: Fix some instruction descriptions.
4173
4174         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
4175         unused instructions.
4176
4177 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4178
4179         * exceptions.cs: Add a new test.
4180
4181 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4182
4183         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
4184
4185 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4186
4187         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
4188         skip empty phi opcodes.
4189         
4190         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
4191         correctly by zero extending after loads. Skip methods containing calls
4192         to the monitor enter/exit trampolines.
4193
4194         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
4195         when calling mono_thread_force_interruption_checkpoint ().
4196
4197         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
4198
4199         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
4200         64 bit thunks.
4201         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
4202
4203         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
4204         bootstrap could run.
4205
4206 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4207
4208         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
4209
4210 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4211
4212         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
4213         of the method to
4214         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4215         LLVM might be very short.
4216
4217         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
4218         in OP_THROW/RETHROW.
4219
4220         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4221         alignment on osx.
4222
4223 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4224
4225         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4226         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4227         LLVM might be very short.
4228
4229 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4230
4231         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4232         the alignment for the value of sp.
4233
4234 2009-09-01  Geoff Norton  <gnorton@novell.com>
4235
4236         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4237         managed wrappers in full aot.
4238
4239 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4240
4241         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4242
4243 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4244
4245         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4246
4247 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4248
4249         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4250
4251         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4252         saved info.
4253
4254         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4255
4256         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4257         depend on the info MonoMethodHeader which could be missing in IL stripped
4258         assemblies.
4259
4260 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4261
4262         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4263         they are only 4 byte aligned.
4264
4265 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4266
4267         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4268         was done previously, since using SP causes too many problems.
4269
4270         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4271         frames without a frame pointer works.
4272
4273         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4274         global register in methods with calls, since the calls can go through
4275         a static rgctx trampoline which doesn't save it.
4276
4277 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4278
4279         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4280
4281 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4282
4283         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4284
4285 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4286
4287         * method-to-ir.c: Fix warnings for uninitialized variables.
4288
4289 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4290
4291         * mini-exceptions.c:
4292         * aot-compiler.c: Fix printf warnings.
4293
4294 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4295
4296         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4297         Add GetGenericValueImpl<string>.
4298         
4299         * aot-compiler.c (add_generic_instances): Add instances of
4300         GenericEqualityComparer<T> for primitive types. Only emit the array
4301         wrappers into the mscorlib image.
4302
4303 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4304
4305         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4306         the methods_loaded array using amodule->info->nmethods.
4307
4308         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4309         (MONO_AOT_FILE_VERSION): Bump this.
4310
4311         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4312         to work.
4313
4314         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4315         MonoJitInfo doesn't belong to its methods aot image.
4316
4317 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4318
4319         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4320
4321         * mini-arm.c: Fix warnings.
4322         
4323         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4324
4325         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4326         supports it.
4327
4328 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4329
4330         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4331         avoid clobbering IP.
4332
4333         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4334         hold the trampoline argument, so its initial value is available during
4335         debugging.
4336
4337 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4338
4339         * exceptions-arm.c:
4340         * exceptions-hppa.c:
4341         * mini.c:
4342         * exceptions-s390x.c:
4343         * exceptions-mips.c:
4344         * exceptions-ppc.c:
4345         * exceptions-sparc.c:
4346         * exceptions-alpha.c:
4347         * aot-runtime.c:
4348         * mini-trampolines.c:
4349         * exceptions-x86.c:
4350         * exceptions-s390.c: add and use #define's instead of sizeof()
4351         for MonoJitInfo and MonoJitInfoTable.
4352
4353 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4354
4355         * tramp-arm.c:
4356         * tramp-amd64.c:
4357         * tramp-ppc.c:
4358         * tramp-x86.c: use a #define instead of sizeof() for a few
4359         structures that use a zero-length array.
4360
4361 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4362
4363         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4364         case when the method is dynamic. Fixes #529238.
4365
4366 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4367
4368         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4369         of asserting when a method is JIT compiled in full-aot mode.
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         * fixed wrong dates in changelog.
4377
4378 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4379         
4380         Contributed under the terms of the MIT/X11 license by
4381         Jerry Maine <crashfourit@gail.com>.
4382
4383         * basic-simd.cs: added test for packed double square root.
4384         * cpu-amd64.md: added opcode info for packed double square root.
4385         * cpu-x86.md: added opcode info for packed double square root.
4386         * mini-ops.h: added IR opcode for packed double square root.
4387         * mini-x86.c: added IR to native translation code for packed double square root.
4388         * mini-amd64.c: removed todo for packed double square root.
4389         * simd-intrinsics.c: added method to IR opcode converstion for
4390         packed double square root.
4391
4392 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4393
4394         Contributed under the terms of the MIT/X11 license by
4395         Jerry Maine <crashfourit@gail.com>.
4396
4397         * mini-amd64.c: Added a change to help tell the difference as 
4398         to what perpose the xmm register is being used--mainly to help
4399         with debuging.
4400         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4401         (one used for special cases) xmm registers for both fp
4402         and simd ops. Added define to turn on new feature in the regalloc
4403         that allows fp and simd ops to share the xmm regs happily.
4404         * codegen.c: Added code to detect for which perpose an xmm reg is
4405         being used (fp or simd) and to translate back and forth to the
4406         correct logical reg bank (fp or simd) for 'spill load's.
4407
4408 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4409
4410         Contributed under the terms of the MIT/X11 license by
4411         Jerry Maine <crashfourit@gail.com>.
4412
4413         * basic-simd.cs: Added tests for stressing the regalloc when running with
4414         16 simd regs and when simd and fp ops share the same reg bank.
4415
4416 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4417
4418         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4419         in shared generic code, we might have to look up the class in the
4420         RGCTX.  If we use the class directly, compute its GC descriptor.
4421
4422 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4423
4424         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4425
4426 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4427
4428         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4429         check for errors. Fixed the case when the class with the Main
4430         method is broken.
4431
4432 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4433
4434         Contributed under the terms of the MIT/X11 license by
4435         Jerry Maine <crashfourit@gail.com>.
4436
4437         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4438
4439 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4440
4441         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4442
4443 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4444
4445         * method-to-ir.c: Fix naming of stelem and ldelem.
4446
4447 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4448
4449         * driver.c (main_thread_handler): Check that the assembly loaded
4450         matches the filename when doing AOT.
4451
4452 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4453
4454         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4455         call it anymore.
4456
4457         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4458         utils/mono-sigcontext.h).
4459
4460         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4461         #ifdef.
4462
4463 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4464
4465         * mini.c (mono_codegen):
4466         Call profiler hook to keep track of method code buffers.
4467
4468 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4469
4470         * method-to-ir.c: Invoke write barriers for the
4471         Interlocked.(Compare)Exchange JIT intrinsics.
4472
4473 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4474
4475         * Makefile.am (version.h): Fix issues when built out of tree.
4476         Remove some redundant 'grep's piped through 'sed's.
4477
4478 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4479
4480         This patch is contributed under the terms of the MIT/X11 license
4481
4482         * mini-ppc.c (mono_arch_output_basic_block):
4483         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4484         for bits 32-47 with signed load/store diplacements for bits
4485         48-63.  Use prefered base/offset order for indexed form.
4486         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4487         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4488         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4489         OP_LOADI2_MEMBASE): Same.
4490         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4491         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4492         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4493         indexed form.
4494         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4495         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4496         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4497         OP_LOADI1_MEMINDEX): Same
4498         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4499         OP_STORER8_MEMINDEX): Same
4500         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4501         computations.
4502         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4503         for bits 32-47 with signed load/store diplacements for bits
4504         48-63.  Use prefered base/offset order for indexed form.
4505
4506 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4507
4508 This patch is contributed under the terms of the MIT/X11 license
4509
4510         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4511         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4512         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4513         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4514         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4515         cfg->stack_usage to avoid size warnings.
4516         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4517         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4518         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4519         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4520         to convert.
4521         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4522         after code varible is initialized.
4523         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4524         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4525         (mono_arch_emit_epilog): 
4526         Move Use ppc_load32 for cfg->stack_usage to avoid size
4527         warnings.
4528
4529 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4530
4531         * method-to-ir.c: The write barrier doesn't do the store anymore,
4532         so we have always to emit it.  Also, emit the wbarrier after the
4533         store.
4534
4535 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4536
4537         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4538         for argument count 3 too.
4539
4540 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4541
4542         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4543         the caller handle the exceptions.
4544         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4545         method. Fixes #524498.
4546
4547 2009-07-22  Geoff Norton  <gnorton@novell.com>
4548
4549         * mini-exceptions.c: Fix build on ia64.
4550
4551 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4552
4553         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4554         barriers.
4555
4556 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4557
4558         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4559         code.
4560
4561 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4562
4563         * basic-simd.cs (Main): Pass args to the test driver.
4564
4565 2009-07-20  Geoff Norton  <gnorton@novell.com>
4566
4567         * mini-x86.h: Fix the x86 version guards to use Apple's
4568         properly defined macros.
4569
4570 2009-07-20  Geoff Norton  <gnorton@novell.com>
4571
4572         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4573         aligned access.
4574
4575 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4576
4577         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4578         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4579         the information which is needed for invokes, so only one locking+hash table
4580         lookup is needed.
4581
4582         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4583         
4584         * aot-compiler.c (add_generic_instances): Emit instances of 
4585         GenericComparer<T> for primitive types.
4586
4587 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4588
4589         * mini-posix.c: Fix linux build.
4590
4591 2009-07-19  Geoff Norton  <gnorton@novell.com>
4592
4593         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4594         mono_gdb_render_native_backtraces
4595         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4596         so we implement the sane semantics to the runtime here
4597         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4598         so we need to call it differently (mono_gdb_render_native_backtraces)
4599         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4600         here for default implementations.
4601         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4602         support Apple's weird syscall (SYS_fork) implementation and not busy
4603         loop in abort() on native crashes on OSX anymore.
4604
4605 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4606
4607         * aot-runtime.c (load_method): Change the handling of the
4608         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4609         are used.
4610
4611         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4612
4613 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4614
4615         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4616         seems to break the aot tests.
4617         
4618         * mini.c (mono_patch_info_equal): Fix the handling of 
4619         MONO_PATCH_INFO_RGCTX_FETCH.
4620
4621 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4622
4623         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4624
4625         * mini.c (mono_patch_info_hash): Fix the handling of 
4626         MONO_PATCH_INFO_INTERNAL_METHOD.
4627         (mono_patch_info_equal): Ditto.
4628
4629 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4630
4631         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4632         in a few places.
4633         
4634         * mini-llvm.c: Add some infrastructure for AOT support.
4635
4636 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4637
4638         * mini-llvm-cpp.c: Update to the latest llvm api.
4639         
4640         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4641         option to false to prevent llvm from installing signal handlers which
4642         trip up the gc.
4643         
4644 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4645
4646         * cpu-x86.md:
4647         * cpu-amd64.md: Revert previous change as those instructions
4648         take 2 separate arguments. Remember to read the arch docs more
4649         carefully next time.
4650
4651 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4652
4653         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4654
4655 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4656
4657         * mini-ppc.c: exploit multiple load/store units if available (rest of
4658         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4659         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4660
4661 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4662
4663         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4664         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4665
4666 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4667
4668         * cpu-x86.md: Fix missing clobbering from trancendental simd
4669         ops.
4670
4671         * cpu-amd64.md: Same.
4672
4673 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4674
4675         Contributed under the terms of the MIT/X11 license by
4676         Jerry Maine <crashfourit@gail.com>.
4677
4678         * basic-simd.cs: Added tests for single and doulble indexers.
4679
4680         * cpu-amd64.md: Added simd opcode information.
4681
4682         * mini-amd64.c: Added IR to native simd generation code.
4683         Added simd register names and function that returns them.
4684
4685         * mini-amd64.h: Added marcos to turn on simd code compilation in
4686         amd64. Added max simd register count marco. Added caller/callee
4687         register mask marcos. Added marcos to use simd register bank.
4688
4689         * mini.h: Added helper marco for shufling dwords and simple
4690         floats.
4691
4692 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4693
4694         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4695
4696         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4697
4698         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4699         the length of the native code as well.
4700
4701         * basic-simd.cs: Add a test for #521662.
4702
4703 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4704
4705         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4706
4707 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4708
4709         * mini.c: Register function for getting the IP from a signal
4710         context with metadata.
4711
4712 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4713
4714         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4715         call a generic class init trampoline if needed. Fixes #519336.
4716
4717         * generics.cs: Add a test.
4718         
4719 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4720
4721         * method-to-ir.c: When doing a call which might be remote from
4722         shared generic code to other shared code with open type arguments,
4723         get the remoting invoke wrapper from the RGCTX and do an indirect
4724         call to it.
4725
4726 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4727
4728         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4729         after the unbox trampoline in the full-aot case.
4730
4731 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4732         
4733         * mini.c: Move initialization of jit_mutex before debugger initialization
4734         
4735         to avoid crashes.
4736         
4737         
4738         * Info.plist: added Info.plist and link flag to enable the mono executable
4739         to access other processes. Requires codesigning of the executable to work.
4740         
4741         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4742         
4743         compile on OS X.
4744         
4745
4746 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4747
4748         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4749
4750 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4751
4752         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4753         when the generic instance is an instantiation of a subclass of the
4754         methods class. Fixes #517166.
4755
4756 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4757
4758         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4759         code.
4760
4761         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4762         AOTed code.
4763
4764         * CMakeLists.txt: Add minimal support for installation.
4765
4766 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4767
4768         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4769         determine whenever a method is directly callable to a separate function.
4770
4771         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4772         needed ones as a result of the previous change.
4773
4774         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4775         type of register arrays.
4776
4777         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4778         type of register arrays.
4779
4780 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4781         
4782         Contributed under the terms of the MIT/X11 license by
4783         Jerry Maine <crashfourit@gail.com>.
4784
4785         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4786
4787 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4788
4789         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4790
4791 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4792
4793         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4794         dump of structure return value. Fix some formatting.
4795         * cpu-s390x.md: Fix lengths of instruction sequences.
4796         * mini-s390.c: Minor formatting changes.
4797
4798 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4799
4800         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4801         Use sigaction on freebsd as well.
4802
4803 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4804
4805         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4806         uses #ifdef on it.
4807         
4808         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4809
4810 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4811
4812         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4813
4814 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4815
4816         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4817
4818 2009-06-20  Martin Baulig  <martin@ximian.com>
4819
4820         * debug-mini.c
4821         (MonoDebuggerThreadFlags): New enum typedef.
4822         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4823         (mono_debugger_thread_created): Added `gpointer func' argument;
4824         initialize the new `thread_flags' field.
4825
4826 2009-06-18  Martin Baulig  <martin@ximian.com>
4827
4828         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4829         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4830
4831         * debug-debugger.c
4832         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4833         flag in `MONO_DEBUGGER__info.runtime_info'.
4834
4835         * driver.c
4836         (mono_main): Call mini_debugger_set_attach_ok() if generics
4837         sharing is disabled.
4838
4839 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4840
4841         * aot-compiler.c (add_wrappers): Fix a warning.
4842
4843         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4844         the ppc load/store macro changes.
4845
4846 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4847
4848         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4849
4850         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4851         not just the got symbol.
4852
4853         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4854         on ppc.
4855
4856         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4857         ppc.
4858         
4859         * aot-compiler.c: Remove some fixmes.
4860
4861         * driver.c (mono_main): Print a helpful message when cross-compiling.
4862
4863         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4864
4865         * method-to-ir.c (initialize_array_data): Do the optimization if the
4866         target byte order is little endian, instead of the host byte order.
4867
4868         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4869         wrappers into the mscorlib image, Emit a unique plt symbol for each
4870         image, emit symbols for plt entries.
4871
4872         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4873         a .size directive.
4874         
4875 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4876
4877         * aot-compiler.c (add_wrappers): Avoid calling 
4878         mono_marshal_get_type_info () since it can assert for some types.
4879
4880         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4881         ldtoken are used inside wrappers.
4882
4883         * helpers.c: Add support for prefixing tools with the arch name.
4884
4885         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4886         quantities when using ilp32.
4887
4888         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4889         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4890
4891         * image-writer.c: Use .long on ilp32.
4892
4893         * aot-compiler.c: Use 32 bit loads on ilp32.
4894         
4895 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4896
4897         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4898
4899         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4900
4901         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4902
4903         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4904         second got slot of every aot image.
4905         
4906         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4907         aot on platforms with function pointers.
4908
4909         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4910         support for aot/full aot on ppc/ppc64.
4911         
4912         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4913         arguments which are needed on ppc.
4914
4915         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4916         argument.
4917
4918         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4919         
4920         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4921
4922         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4923
4924         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4925
4926         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4927
4928 2009-06-17  Geoff Norton  <gnorton@novell.com>
4929
4930         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4931
4932 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4933
4934         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4935         to control whenever the dwarf writer is in xdebug or aot mode.
4936         (emit_class_dwarf_info): Use a separate abbrev for structures without
4937         children.
4938
4939         * aot-compiler.c: Pass the appending parameter to 
4940         mono_dwarf_writer_create ().
4941
4942         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4943         falls through to its next bblock. Fixes #513931.
4944
4945         * iltests.il: Add a test.
4946
4947         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4948         infor even if emit_line is FALSE, as the apple linker seems to require it.
4949
4950         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4951
4952         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4953         gcc does.
4954         (emit_fde): Ditto.
4955
4956 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4957
4958         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4959         mips build.
4960
4961 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4962
4963         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4964         'has_call_handler' fields.
4965
4966         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4967
4968         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4969         first bblock if not needed. Fixes #512790.
4970         
4971 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4972
4973         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4974         
4975         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4976         wrappers.
4977
4978         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4979         remoting-invoke-with-check wrappers, which are not needed when running with
4980         full-aot, since it doesn't support remoting.
4981         
4982 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4983
4984         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4985
4986         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4987         method info, it is not used anymore.
4988
4989         * mini.h: Bump AOT file format version.
4990         
4991         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4992         word smaller.
4993
4994         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4995         change above.
4996         
4997         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4998
4999         * mini.h: Bump AOT file format version.
5000         
5001 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
5002
5003         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
5004         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
5005         iphone.
5006
5007         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
5008         of CKFINITE and FBGE for VFP.
5009
5010 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
5011
5012         * aot-compiler.c: Don't align code to 16 bytes on arm.
5013         
5014         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
5015         before the methods they belong to.
5016
5017         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
5018         the full-aot case if possible, since the trampoline will be called right 
5019         away.
5020
5021         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
5022         trampolines to 1024 after the change above.
5023
5024         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
5025         trampoline to save 8 bytes per trampoline.
5026
5027         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
5028         change above.
5029
5030 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
5031
5032         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
5033
5034 2009-06-08  Martin Baulig  <martin@ximian.com>
5035
5036         * debug-mini.c
5037         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
5038         (_mono_debugger_throw_exception): Don't make this static.
5039         (_mono_debugger_unhandled_exception): Likewise.
5040         (mono_debugger_handle_exception): Moved to mini-exceptions.c
5041
5042         * debug-mini.c
5043         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
5044         (_mono_debugger_throw_exception): Add function prototype.
5045         (_mono_debugger_unhandled_exception): Likewise.
5046
5047         * mini-exceptions.c
5048         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
5049         arg; return the first exception handler if the exception is caught
5050         and we're running inside the debugger.
5051         (mono_debugger_handle_exception): Moved here from debug-mini.c;
5052         improve exception handle inside runtime-invoke, check whether the
5053         exception is actually caught in the method being invoked and not
5054         by the runtime-invoke-wrapper.
5055
5056 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
5057
5058         * image-writer.c: Improve support for the osx assembler.
5059
5060         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
5061         support them.
5062
5063 2009-06-08  Martin Baulig  <martin@ximian.com>
5064
5065         * debug-mini.c
5066         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
5067         (_mono_debugger_throw_exception): Don't make this static.
5068         (_mono_debugger_unhandled_exception): Likewise.
5069         (mono_debugger_handle_exception): Moved to mini-exceptions.c
5070
5071         * debug-mini.c
5072         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
5073         (_mono_debugger_throw_exception): Add function prototype.
5074         (_mono_debugger_unhandled_exception): Likewise.
5075
5076         * mini-exceptions.c
5077         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
5078         arg; return the first exception handler if the exception is caught
5079         and we're running inside the debugger.
5080         (mono_debugger_handle_exception): Moved here from debug-mini.c;
5081         improve exception handle inside runtime-invoke, check whether the
5082         exception is actually caught in the method being invoked and not
5083         by the runtime-invoke-wrapper.
5084
5085 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
5086
5087         * image-writer.c (append_subsection): Don't align subsections of the
5088         debug_line section as a workaround.
5089
5090         * dwarfwriter.c: Emit line number info in the AOT case as well.
5091
5092 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
5093
5094         This patch is contributed under the terms of the MIT/X11 license
5095
5096        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
5097        code_len <= code_size
5098
5099 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
5100
5101         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
5102
5103 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5104
5105         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
5106         invoke wrappers, we now use trampolines instead.
5107
5108 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5109
5110         * mini-darwin.c: The exception thread must not be registered with
5111         the GC.
5112
5113 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5114
5115         * mini-gc.c: Disable the code because it makes SGen crash.
5116
5117 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
5118
5119         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
5120         instead of asserting.
5121
5122 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5123
5124         * aot-compiler.c (mono_compile_assembly): Move the creation of the
5125         output file after the code has been compiled.
5126
5127 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
5128
5129         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
5130
5131 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5132
5133         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
5134         entries distinction to simplify the code.
5135
5136         * mini.h: Bump AOT file format version.
5137         
5138 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
5139
5140         * objects.cs: Fix the signature of one of the tests.
5141
5142         * mini.c (mini_create_ftnptr): New helper function, moved here from
5143         object.c.
5144         (mini_get_addr_from_ftnptr): Ditto.
5145         (mini_init): Install the new helpers.
5146
5147 2009-05-28  Martin Baulig  <martin@ximian.com>
5148
5149         Correctly initialize the debugger when embedding Mono.
5150
5151         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
5152         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
5153         see documentation in mini_debug_running_inside_mdb().
5154
5155         * debug-debugger.c
5156         (mini_debug_running_inside_mdb): New function to check whether
5157         we're running inside mdb.
5158
5159         * mini.c (mini_init): Call mini_debugger_init() if we're running
5160         inside the debugger.
5161
5162         * driver.c (mono_main): Moved the call to mini_debugger_init()
5163         into mini_init() to make this work when embedding Mono.
5164
5165         * debug-debugger.c (mini_debugger_init): Warn about duplicate
5166         calls to mini_debugger_init().
5167
5168         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
5169         mono_debugger_main() -> mini_debugger_main() and put them inside a
5170         `MONO_DEBUGGER_SUPPORTED' conditional.
5171
5172 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
5173
5174         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
5175         this is no longer in use.
5176         * mini.h: Same.
5177
5178 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
5179
5180         * mini-sparc.c (add_outarg_load): Fix the sparc build.
5181
5182         * aot-compiler.c (emit_method_code): Always write out C style symbols for
5183         methods.
5184
5185 2009-05-27  Martin Baulig  <martin@ximian.com>
5186
5187 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5188
5189         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
5190         long_conv_to_r_un to 64 bits.
5191
5192         * cpu-x86.md: Increase the instruction size due to the changes.
5193
5194         * iltests.il.in: Add regression test.
5195
5196         Fixes #467201.
5197
5198 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5199
5200         * objects.cs: Move the previous test from basic.cs to here.
5201
5202 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5203
5204         * basic.cs: Add regression test for #506915.
5205
5206 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5207
5208         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
5209         optimization we must check the bb of the first byte of stobj as
5210         it's the only one set in cil_offset_to_bb.
5211
5212         Fixes #506915.  
5213
5214 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5215
5216         * image-writer.c: Fix pointer directive on ppc64.
5217
5218 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
5219
5220         * image-writer.c (asm_writer_emit_section_change): Avoid using
5221         .bss subsections on ppc too.
5222
5223 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5224
5225         * image-writer.c: Fix the definition of TARGET_ASM_....
5226         
5227         * image-writer.c: Fix the emission of assembler directives in the last
5228         change.
5229
5230         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5231         exception throwing code to accomodate ppc64.
5232
5233         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5234         size to work on ppc64 too.
5235
5236         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5237         too.
5238
5239         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5240         the assembler dialect instead of using platform specific defines.
5241
5242 2009-05-22  Geoff Norton  <gnorton@novell.com>
5243
5244         * mini-arm.c (get_call_info): If a structure is split between the stack
5245         and argument registers, we should not advance the stack pointer by the entire
5246         native size, but just by the amount that spilled.
5247
5248 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5249
5250         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5251         correctly.
5252
5253 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5254
5255         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5256         wrappers normally.
5257         
5258         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5259         methods so wrapper don't get added twice.
5260         (add_generic_instances): Don't add methods of arrays.
5261
5262         * generics.cs: Mark one test as !FULLAOT.
5263
5264 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5265
5266         * mini-x86.c (emit_move_return_value): Remove unused vars.
5267
5268 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5269
5270         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5271         decomposing 8 bytes structs into a LCALL.
5272
5273         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5274         pointer for where to store the returned regs.
5275
5276         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5277         state the concern.
5278
5279         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5280
5281 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5282
5283         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5284         without getenv.
5285
5286 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5287
5288         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5289
5290         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5291         generics.
5292
5293 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5294
5295         * local-propagation.c (mono_local_cprop): Avoid local propagation
5296         across paired add/sub if the first instruction dest reg is it's
5297         source reg. For example:
5298
5299         int_add_imm R12 <- R12 [1] clobbers: 1
5300         int_sub_imm R42 <- R12 [1] clobbers: 1
5301
5302         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5303         maintain the math identify.
5304
5305         Fixes #505375.
5306
5307 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5308
5309         * Makefile.am: avoid going on the network just to get the revision,
5310         use git log instead
5311
5312 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5313
5314         Fixed estimate for short branches on amd64 (they were off mark, and
5315         enabling call prolog-epilog instrumentations caused assertions).
5316         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5317         estimate for the maximum length of this basic block.
5318         * mini-amd64.c:
5319         - mono_arch_emit_prolog: compute max_length for each basic block
5320           (instead of max_offset), and inflate size estimate also for entry bb
5321           in case of code instrumentation.
5322         - mono_arch_output_basic_block: get rid of "cpos" (the current
5323           estimated "position" in the code), and always use "offset" instead,
5324           which is accurate; at the beginning of the function quickly recompute
5325           max_offset for all the remaining blocks, starting from the current
5326           cfg->code_len (which is correct, and not estimated) and using the
5327           estimated block lengths computed previously.
5328
5329 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5330
5331         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5332         functions, it is already done in the caller.
5333
5334         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5335
5336         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5337         MONO_ARCH_GSHARED_SUPPORTED define.
5338
5339         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5340
5341         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5342         function.
5343
5344 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5345
5346         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5347         call to mono_marshal_get_rgctx_invoke ().
5348
5349         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5350         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5351         gshared use the static rgctx trampolines now.
5352         
5353         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5354         platform supports it.
5355
5356 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5357
5358         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5359
5360         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5361
5362 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5363
5364         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5365
5366         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5367         for ppc.
5368
5369 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5370
5371         Made it possible for mono_arch_instrument_epilog to preserve
5372         argument registers, otherwise instrumenting the "epilogue" before
5373         a tail call would clobber them.
5374         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5375         if like mono_arch_instrument_epilog but with an additional parameter
5376         that states if argument registers must be preserved.
5377         * mini.c: implemented mono_arch_instrument_epilog as a call to
5378         mono_arch_instrument_epilog_full without asking to preserve argument
5379         registers (this makes the existing code work as usual).
5380         * mini-amd64.c:
5381         - mono_arch_instrument_epilog: add parameter to transform it into
5382         mono_arch_instrument_epilog_full, and preserve argument registers
5383         when required.
5384         - mono_arch_output_basic_block, OP_TAILCALL case: call
5385         mono_arch_instrument_epilog_full.
5386         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5387         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5388         only transformed mono_arch_instrument_epilog into
5389         mono_arch_instrument_epilog_full.
5390
5391 2009-05-15  Geoff Norton  <gnorton@novell.com>
5392
5393         * mini-darwin.c: This works on arm now.
5394
5395 2009-05-14  Geoff Norton  <gnorton@novell.com>
5396
5397         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5398         embedding api.
5399
5400 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5401
5402         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5403         label names.
5404
5405         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5406         wrappers during full aot mode correctly.
5407
5408         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5409         methods correctly.
5410
5411         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5412         mono_metadata_type_hash ().
5413
5414 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5415
5416         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5417         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5418         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5419         Removed MONO_INST_BRLABEL from the instruction flags, and the
5420         remaining code that used it, because we do not support branches inside
5421         basic blocks (and branch target labels) anymore.
5422         * Makefile.am: As part of the above cleanup, remove reference to
5423         BURG files which don't exist anymore.
5424
5425 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5426
5427         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5428         osx.
5429
5430         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5431         to use mono_arch_throw_corlib_exception.
5432
5433         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5434         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5435
5436         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5437         domain mempool.
5438
5439         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5440
5441         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5442         for the got to make debugging easier and to avoid confusing it with the
5443         system got.
5444         
5445         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5446         method so a breakpoint can be set when using gdb.
5447
5448 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5449
5450         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5451         on mono_method_get_imt_slot ().
5452
5453         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5454         num_decodes variables.
5455
5456         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5457         change as it doesn't seem to work.
5458         
5459         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5460         wrappers.
5461
5462 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5463
5464         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5465         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5466
5467         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5468         builder when using full aot.
5469
5470         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5471         here, it is already handled.
5472         
5473         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5474         correctly for IMT.
5475
5476         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5477
5478         * mini-arm.h: Enable IMT for full aot.
5479         
5480         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5481         arch doesn't support it.
5482
5483         * mini.c (mini_init): Don't disable IMT for full aot if the
5484         architecture supports it.
5485
5486         * mini.h (MonoAotTrampoline): New enum containing the different types
5487         of 'numerous' trampolines.
5488         (MONO_AOT_FILE_VERSION): Bump this.
5489
5490         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5491         static rgctx trampolines. Add support for full-aot IMT thunks.
5492
5493         * mini-amd64.h: Enable IMT for full aot.
5494
5495         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5496         to exclude tests belonging to a category.
5497
5498         * generics.cs: Mark some tests with a !FULLAOT category.
5499
5500         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5501         generics tests.
5502
5503 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5504
5505         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5506         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5507         (emit_plt): Fix a warning.
5508
5509 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5510
5511         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5512         back into aot-compiler.c to a place where the other functions shared by
5513         the runtime and aot compiler are.
5514         
5515         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5516         as done previously, instead of in MonoAotFileInfo, since pointers might have
5517         alignment requirements.
5518
5519         * mini.h: Bump AOT file format version.
5520
5521 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5522
5523         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5524         that is used at runtime from the aot-compiler.c, this makes it
5525         work on setups that remove the AOT compiler from the output
5526         image. 
5527
5528 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5529
5530         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5531         PPC.
5532
5533         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5534
5535         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5536
5537         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5538         stuff to mono_arch_decompose_long_opts ().
5539         (mono_decompose_opcode): Remove some dead code.
5540
5541 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5542
5543         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5544         cmethod can be null for quite a some reasons.
5545
5546 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5547
5548         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5549
5550 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5551
5552         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5553
5554 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5555
5556         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5557         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5558         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5559         calls returning structures by addr on amd64.
5560
5561         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5562
5563         * iltests.il.in: Restructure the tail call tests a bit.
5564         
5565 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5566
5567         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5568         for virtual methods too.
5569
5570 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5571
5572         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5573         due to regression in verifying System.dll.
5574
5575 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5576
5577         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5578         in dynamic methods.
5579
5580         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5581         instances.
5582
5583         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5584         g_str_hash () which can change.
5585
5586         * driver.c (mini_regression): Disable optimizations not supported by
5587         the cpu. Fixes #500019.
5588
5589         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5590         build.
5591
5592 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5593
5594         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5595         to the latest LLVM code.
5596
5597 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5598
5599         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5600
5601 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5602
5603         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5604         x86/amd64.
5605
5606         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5607         no longer saving offsets, so just save the patch types along with the other
5608         info.
5609         * aot-runtime.c (load_patch_info): Update after the changes to 
5610         encode_patch_list ().
5611         (decode_got_entry): Removed, merged into load_patch_info ().
5612         (is_shared_got_patch): Removed, call the same function from
5613         aot-compiler.c.
5614
5615         * mini.h: Bump aot file format version.
5616         
5617         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5618         half-finished no-dlsym code.
5619
5620         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5621         option.
5622
5623         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5624         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5625
5626 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5627
5628         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5629         buffer length to work with AOT code.
5630
5631         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5632         ldfld/stfld opcodes.
5633
5634         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5635         as it is not used.
5636
5637         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5638
5639         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5640
5641         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5642         LLVM API.
5643
5644         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5645         if needed. Don't decompose long operations when using llvm.
5646
5647 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5648
5649         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5650         PAGESIZE constant.
5651
5652         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5653
5654 2009-05-03  Martin Baulig  <martin@ximian.com>
5655
5656         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5657         mono_debugger_insert_method_breakpoint() since the class init
5658         handler we're inserting at the top of the method already gives us
5659         a notification.
5660
5661 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5662
5663         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5664         to mono_arch_decompose_long_opts () for x86 and arm.
5665
5666 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5667
5668         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5669         TARGET_AMD64 here.
5670
5671 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5672
5673         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5674         JIT code.
5675
5676 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5677
5678         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5679         number of trampolines used in full-aot mode.
5680
5681         * aot-compiler.c: Add an ntrampolines option to set the number of 
5682         trampolines emitted in full-aot mode.
5683
5684 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5685
5686         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5687         a volatile load. Get rid of get_tempname (), llvm assigns names
5688         automatically.
5689
5690         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5691         builder function.
5692
5693         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5694         a value.
5695
5696         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5697         level 1.
5698
5699         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5700         to the same register as a fixed sreg2. Fixes #497271.
5701
5702         * iltests.il.in: Add a new test.
5703
5704 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5705
5706         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5707         stack, since pushes complicate exception handling.
5708
5709         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5710         the stack if they are passed using moves.
5711
5712         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5713
5714         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5715         when using llvm.
5716
5717         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5718         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5719         of FMOVE if it is an R4.
5720
5721 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5722
5723         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5724
5725         * mini.h (LLVMCallInfo): New structure to store calling convention 
5726         information for the LLVM back end similar to the CallInfo structures in 
5727         the back-ends.
5728
5729         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5730         call information in a format usable by LLVM.
5731         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5732
5733         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5734         mono_llvm_emit_call () when compiling using LLVM.
5735
5736         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5737         comments to all functions. Fix memory leaks. Add a public init/cleanup
5738         function.
5739
5740         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5741
5742         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5743         mono_array_new_va () jit icall.
5744         
5745 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5746
5747         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5748         multiple machine description files to be specified.
5749         * mini-ops.h: fixes for cross-compilation.
5750
5751 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5752
5753         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5754         some porting work.
5755
5756 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5757
5758         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5759         to prevent asserts in various passes. Fixes #497220.
5760
5761 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5762
5763         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5764         a racy assert.
5765
5766         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5767         table to avoid duplicates.
5768
5769         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5770         
5771         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5772         option is used.
5773
5774 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5775
5776         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5777         is for method or field access.
5778
5779 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5780
5781         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5782         a Value to stdout.
5783
5784         * mini-llvm.c (mono_llvm_emit_method): Use it.
5785         
5786         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5787         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5788         on volatile values.
5789
5790         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5791         synchronized methods.
5792
5793         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5794
5795         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5796
5797         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5798         OP_LOADI8_MEM.
5799
5800         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5801         allowing some options to be set dynamically.
5802
5803 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5804
5805         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5806         unconditional branch.
5807
5808         * mini.h (MonoTrampolineType): Add new trampoline type 
5809         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5810         compiled code.
5811
5812         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5813         function.
5814
5815         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5816         creation function.
5817
5818         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5819         is enabled. Instead, use the llvm vcall trampoline.
5820         
5821         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5822
5823         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5824         
5825         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5826         functions.
5827
5828         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5829         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5830
5831         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5832         OP_IA64_CSET opcode.
5833
5834         * mini.c: Fix a warning.
5835
5836         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5837         THROW to the appropriate llvm type.
5838
5839 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5840
5841         * mini.c (mini_method_compile): Add statistics for methods JITted
5842         with/without LLVM.
5843
5844 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5845
5846         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5847         OP_IA64_CMP_<cond>_IMM opcodes.
5848
5849 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5850
5851         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5852         corlib exceptions.
5853
5854         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5855         correctly.
5856
5857         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5858         GENERICINST.
5859
5860 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5861
5862         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5863
5864 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5865
5866         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5867         support.
5868
5869         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5870         rgctx invoke trampolines for x86.
5871
5872         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5873         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5874         (mono_arch_get_vcall_slot): Simplify this.
5875
5876 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5877
5878         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5879         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5880
5881 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5882
5883         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5884         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5885
5886         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5887
5888         * liveness.c (visit_bb): Remove a needless assert.
5889
5890 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5891
5892         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5893         full aot support to the arch specific code.
5894
5895         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5896
5897         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5898
5899         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5900         
5901         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5902         collect information about the delegate invoke impl trampolines.
5903
5904         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5905         to save trampolines during full-aot mode.
5906
5907         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5908         creation function which returns a trampoline which sets the rgctx
5909         argument.
5910         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5911         wrapper if possible.
5912         (mono_delegate_trampoline): Ditto.
5913
5914         * mini.c (mono_jit_runtime_invoke): Ditto.
5915
5916         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5917         
5918         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5919
5920         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5921         
5922 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5923
5924         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5925         just setting the opcode to OP_NOP.
5926
5927 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5928
5929         * mini.c (mini_method_compile): Put the last change inside an 
5930         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5931         
5932         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5933         and extend live ranges to cover the whole method when using xdb.
5934
5935         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5936         do it in the trampolines.
5937
5938         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5939         needed.
5940
5941         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5942         
5943         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5944         call code in full-aot mode since IMT is disabled there.
5945         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5946         new JIT no longer has that restriction.
5947
5948         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5949
5950         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5951         a more compact format.
5952         (mono_aot_wrapper_name): New function to return a unique name for a
5953         wrapper method, also used by the AOT runtime.
5954
5955         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5956         aot-compiler.c.
5957
5958         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5959         when a ICollection<T> etc is encountered.
5960         (add_generic_instances): Process method arguments/locals too.
5961         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5962         trampoline names.
5963
5964         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5965         
5966 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5967
5968         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5969
5970         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5971
5972         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5973         representing the result of the decomposition. Nullify instructions
5974         instead of setting them to OP_NOP since nops can't have registers
5975         set.
5976
5977 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5978
5979         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5980         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5981         info. Strip 'mapping symbols' on ARM.
5982
5983         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5984         
5985         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5986         this with the native genmdesc.
5987
5988 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5989
5990         * aot-runtime.c:  Fixing the MSVC build.
5991
5992         Code is contributed under MIT/X11 license.
5993
5994 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5995
5996         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5997         JITted code depends on it.
5998
5999 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
6000
6001         * aot-compiler.c: Use new MonoGenericParam accessors.
6002
6003 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
6004
6005         Reduce memory usage and improve correctness wrt MonoGenericParam
6006         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
6007         handing.  Avoid allocating MonoGenericParams, but use the ones in
6008         the container itself.
6009
6010 2009-04-07  Miguel de Icaza  <miguel@novell.com>
6011
6012         * tasklets.c: Return exceptions in the out argument.
6013
6014 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
6015
6016         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
6017         opcode. Use pointer types in more places instead of casting them to 
6018         integers.
6019
6020         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
6021         optimizations.
6022         (mono_llvm_optimize_method): New helper function to optimize a method.
6023
6024         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
6025         widening code so it could be called from more places.
6026         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
6027         code paths in the call opcodes.
6028
6029 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
6030
6031         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
6032
6033 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
6034
6035         * dwarfwriter.c: Use _ to separate class name 
6036         components as gdb can't handle '.'. Represent reference variables
6037         as 'class <NAME>&'.
6038         
6039         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
6040
6041         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
6042         
6043         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
6044
6045         * gc-test.cs: New file with GC stack marking tests.
6046         
6047         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
6048         negative numbers for vfp.
6049
6050         * basic-float.cs: Add a test.
6051         
6052 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
6053
6054         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
6055
6056 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
6057
6058         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
6059         part of tasklet/continuation support.
6060
6061 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
6062
6063         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
6064         amd64 opcodes inside an ifdef.
6065
6066         * dwarfwriter.c: Emit inheritance information for classes, emit fields
6067         of complex types.
6068         
6069         * dwarfwriter.c (emit_type): Emit the class info for classes.
6070
6071 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
6072
6073         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
6074
6075         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
6076
6077         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
6078
6079         * ssa.c (mono_ssa_compute): Fix some memory leaks.
6080
6081 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
6082
6083         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
6084
6085         * mini-llvm.c: Update comments.
6086
6087         * mini.h (COMPILE_LLVM): New macro.
6088
6089         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
6090
6091         * ssa.c (mono_ssa_compute): Ditto.
6092         
6093         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
6094         the unwind ops from a DWARF FDE.
6095
6096         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
6097         methods by extracting the dwarf unwind ops from the unwind info generated
6098         by LLVM.
6099         
6100         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
6101         calls.
6102
6103         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
6104         addressing modes.
6105
6106 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
6107
6108         * Makefile.am (llvm_sources): Enable this.
6109
6110         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
6111         failing back to the JIT if something cannot be handled.
6112
6113         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
6114         compiling with LLVM.
6115
6116         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
6117         compiling with LLVM.
6118
6119         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
6120         compiling with LLVM.
6121
6122         * mini-ops.h: Add a few opcodes needed by LLVM.
6123
6124         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
6125         has no unwind info.
6126
6127         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
6128         backend.
6129
6130         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
6131
6132         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
6133
6134 2009-04-01  Mark Probst  <mark.probst@gmail.com>
6135
6136         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
6137         ridiculously large methods.
6138
6139 2009-03-31  Martin Baulig  <martin@ximian.com>
6140
6141         * debug-debugger.c (debugger_remove_breakpoint): Call
6142         mono_debugger_remove_class_init_callback ().
6143
6144 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
6145
6146         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
6147         right before emitting code, not at the start.
6148
6149         * mini.c (mono_postprocess_patches): Extract this into a separate function
6150         from mono_codegen ().
6151
6152         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
6153         byref types correctly.
6154
6155 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
6156
6157         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
6158         by the last change.
6159
6160 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
6161
6162         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
6163         indirect calls, this avoids problems where get_vcall_slot () would get
6164         confused by the native code for the instruction preceeding the call.
6165         (mono_arch_get_vcall_slot): Simplify this.
6166         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
6167
6168         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
6169         register allocator now seems to depend on them instead of the data in
6170         cpu-<ARCH>.md.
6171
6172         * mini.c (mini_method_compile): Throw the correct type of exception if
6173         mono_method_get_header () fails because of a loading error.
6174
6175 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
6176
6177         * mini.c (mini_method_compile): Clear the loader error if the method
6178         header cannot be decoded.
6179
6180         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
6181         interface methods on proxies correctly.
6182
6183         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
6184         this argument for vtype methods. Add precise liveness info for arguments.
6185
6186         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
6187         LIVERANGE_START/END opcodes.
6188
6189         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
6190         for arguments and values in registers.
6191
6192 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
6193
6194         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
6195         return a valuetype. Fixes #487518.
6196
6197         * iltests.il: Add a test.
6198         
6199         * aot-compiler.c: Use mono_thread_create () to create helper threads.
6200
6201         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
6202         closed over a null reference correctly.
6203
6204 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6205
6206         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
6207
6208 2009-03-25  Mark Probst  <mark.probst@gmail.com>
6209
6210         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
6211         allocated to the same registers as fixed sregs.
6212
6213 2009-03-24  Mark Probst  <mark.probst@gmail.com>
6214
6215         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
6216         ATOMIC_CAS_IMM ops.
6217
6218         * method-to-ir.c: Handle more cases for
6219         Interlocked.CompareExchange.
6220
6221         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6222         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6223         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6224
6225 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6226
6227         * aot-runtime.c (decode_method_ref): Fix a warning.
6228
6229         * unwind.c (mono_unwind_frame): Ditto.  
6230
6231 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6232
6233         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6234         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6235
6236         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6237         fix the handling of large values in the ALU_PC_G0_NC relocation.
6238
6239 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6240
6241         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6242
6243 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6244
6245         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6246         ops.
6247
6248 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6249
6250         * method-to-ir.c: MINI_OP3 needs a comma.
6251
6252         * method-to-ir.c, mini.h, mini.c: Remove
6253         mono_init_op_sreg_counts ().
6254
6255 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6256
6257         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6258         OP_JMP.
6259         
6260         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6261         assertion.
6262
6263         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6264
6265         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6266         code somewhat.
6267
6268 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6269
6270         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6271         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6272         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6273         operations.
6274
6275 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6276
6277         * driver.c: Change location of gc_wrapper.h.
6278
6279         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6280         inside finally clauses correctly. Fixes #485721.
6281
6282         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6283         after the change above.
6284
6285         * exceptions.cs: Add a test.
6286         
6287 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6288
6289         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6290
6291         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6292         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6293         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6294
6295         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6296         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6297
6298 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6299
6300         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6301         Simplify logic for ensure_method_is_allowed_to_call_method. 
6302         Handle wrappers on callers.
6303
6304 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6305
6306         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6307         them don't run yet.
6308
6309         * basic-simd.cs: Fix the names of some test methods.
6310
6311 2009-03-18  Geoff Norton  <gnorton@novell.com>
6312
6313         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6314
6315 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6316
6317         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6318
6319 2009-03-17  Jb Evain  <jbevain@novell.com>
6320
6321         * driver.c: remove now uneeded call to mono_gc_base_init before
6322         mono_profiler_load.
6323
6324 2009-03-17  Jb Evain  <jbevain@novell.com>
6325
6326         * dwarfwriter.c (token_handler): handle more cases.
6327
6328 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6329
6330         * method-to-ir.c: Remove more dead code (that was required only
6331         because of method_is_safe). Fix compiler warnings.
6332
6333 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6334
6335         * method-to-ir.c: Remove unneeded/useless method_is_safe
6336         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6337
6338 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6339
6340         * mini.c (mini_method_compile): Print the method been compiled with
6341         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6342         for people not familiar with the runtime.
6343
6344 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6345
6346         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6347         a managed object which is later put into a GList. Return its class instead.
6348
6349         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6350         stack slots when using sgen.
6351
6352 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6353
6354         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6355
6356 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6357
6358         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6359         > so it works on the first vreg as well.
6360
6361 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6362
6363         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6364         trigger randomly.
6365
6366         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6367         
6368         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6369         implement GArray.
6370
6371 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6372
6373         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6374         native->IL offset mapping.
6375
6376 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6377
6378         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6379
6380         * basic.cs: Add a test.
6381
6382 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6383
6384         * mini-x86.c (mono_arch_output_basic_block): Use different
6385         registers in case the ones we want to overwrite are used by the
6386         other operand.  Fixes regression in #480807.
6387
6388 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6389
6390         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6391
6392         * dwarfwriter.c (emit_line_number_info): The line number info for
6393         IL code was off by one. Fix that.
6394
6395         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6396         stack.
6397
6398 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6399
6400         Contributed under the terms of the MIT/X11 license by Steven
6401         Munroe <munroesj@us.ibm.com>.
6402
6403         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6404         Fixes #483462.
6405
6406 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6407
6408         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6409         as well.
6410
6411 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6412
6413         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6414         the delegate ctor handling code. Fixes #482638.
6415         
6416         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6417         #481458.
6418
6419         * iltests.il.in: Add a test.
6420         
6421         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6422         mini-posix.c.
6423
6424 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6425
6426         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6427         is shared generic code, return the trampoline, even if the method
6428         has already been compiled.  Fixes #479763.
6429
6430         * mini.c, mini.h: New function
6431         mono_jit_find_compiled_method_with_jit_info() which is the same as
6432         mono_jit_find_compiled_method() but also returns the jit info.
6433
6434 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6435
6436         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6437         for methods which actually have one.  For all other methods, make
6438         sure the this argument var is live the whole method.
6439
6440         * mini.c (mini_method_compile): Every shared method has a
6441         this/vtable/mrgctx info.  Fixes #480807.
6442
6443 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6444
6445         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6446         generic/imt thunks where some entries branch through the vtable,
6447         while other entries branch directly.
6448
6449 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6450
6451         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6452
6453         * mini-windows.c: Ditto.
6454         
6455         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6456         ctors.
6457
6458 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6459
6460         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6461         down an assert.
6462
6463 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6464
6465         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6466         #481403.
6467
6468 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6469
6470         * exceptions-x86.c: Include debug-mini.h - fixes build.
6471
6472 2009-03-04  Martin Baulig  <martin@ximian.com>
6473
6474         * debug-mini.c: Clean up the exception API and add documentation.
6475         (mono_debugger_handle_exception): New public method; this is
6476         called when throwing an exception or encountering an unhandled one.
6477         (mono_debugger_call_exception_handler): Formerly known as
6478         mono_debugger_handle_exception(); this is used to tell the
6479         debugger that we're about to invoke an exception handler.
6480
6481 2009-03-04  Martin Baulig  <martin@ximian.com>
6482
6483         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6484         ../metadata/mono-debug-debugger.c; save and reset exception state.
6485
6486 2009-03-02  Martin Baulig  <martin@ximian.com>
6487
6488         * debug-mini.c: Moved the debugger exception handling here from
6489         ../metadata/mono-debug-debugger.c.
6490
6491         * debug-mini.h
6492         (MonoDebuggerExceptionAction): New exception typedef.
6493
6494         * debug-mini.c
6495         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6496
6497         * exceptions-amd64.c
6498         (mono_amd64_throw_exception): Use the new debugger exception
6499         handling code.
6500
6501         * mini-exceptions.c
6502         (mono_handle_exception_internal): Don't call
6503         mono_debugger_unhandled_exception() here.
6504
6505 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6506
6507         * mini.c aot-compiler.c: Update after the changes to 
6508         mono_marshal_get_runtime_invoke ().
6509
6510         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6511         Virtual generic methods might not have method->slot set, work around
6512         that.
6513
6514         * generics.cs: Add a test.
6515
6516 2009-03-02  Geoff Norton  <gnorton@novell.com>
6517
6518         * mini.c:
6519         * driver.c: Allow signal chaining of SIGFPE as well.
6520
6521 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6522
6523         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6524         this since it now receives the method not its generic context in the
6525         IMT reg.
6526
6527         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6528         generic/imt thunks where some entries branch through the vtable, while
6529         other entries branch directly.
6530
6531         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6532
6533         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6534         support for interface methods as well.
6535
6536         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6537         using the normal IMT thunks.
6538
6539         generics.cs: Add new tests.
6540         
6541         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6542         the generic inst to the generic imt thunks. This fixes AOT support, 
6543         improves consistency with the normal IMT thunks, and makes it easier to
6544         add support for interface generic virtual methods later.
6545
6546         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6547         
6548 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6549
6550         * driver.c (mono_set_signal_chaining): New public API function to enable
6551         signal chaining on POSIX platforms.
6552
6553         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6554         (si@lindenlab.com) to implement signal chaining. The original patch was
6555         contributed under the MIT X/11 license:
6556         https://bugzilla.novell.com/show_bug.cgi?id=318894
6557
6558 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6559
6560         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6561         too until it can be made to run on amd64.
6562
6563 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6564
6565         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6566         to  get_generic_context_from_code () + get_call_info () if possible.
6567
6568 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6569
6570         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6571         suspend-on-sigsegv functionality.
6572
6573         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6574         to suspend when a native SIGSEGV is received. This is useful for debugging
6575         crashes which don't happen under gdb, since a live process contains more
6576         information than a core file.
6577
6578         * mini-exceptions.c (mono_print_thread_dump): Use 
6579         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6580
6581         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6582
6583         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6584         
6585         * basic-float.cs: Disable the tests which currently fail on amd64.
6586
6587         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6588         value to mono_arch_patch_callsite () to fix crashes.
6589         
6590         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6591
6592 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6593
6594         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6595         nop code by patching the call address to point to the nullified class init
6596         trampoline, as the former does not seem to be safe on SMP machines.
6597
6598 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6599
6600         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6601         they were wrong.
6602
6603 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6604
6605         * basic-float.cs basic-calls.cs: Fix warnings.
6606
6607 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6608
6609         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6610         correct frame pointer in the LMF.  Should fix #478394.
6611
6612 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6613
6614         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6615
6616         * image-writer.c: Make the binary writer less verbose.
6617
6618 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6619
6620         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6621         are called from runtime invoke wrappers.
6622
6623 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6624
6625         * cpu-ppc.md (store_memindex): Increase the size of this.
6626
6627 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6628
6629         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6630
6631         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6632
6633         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6634         OP_LCONV_TO_R_UN.
6635
6636         Last fix for of #467201.
6637
6638
6639 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6640
6641         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6642
6643         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6644         and long_conv_to_r8_2:
6645
6646         Fixed part of #467201.
6647
6648 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6649
6650         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6651
6652         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6653         conversion to 32 bits.
6654
6655         * cpu-x86.md: Increase the size of int_conv_to_r4.
6656
6657         * basic-float.cs: Add a test for this.
6658
6659         Fixed part of #467201.
6660
6661 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6662
6663         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6664
6665         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6666         conversion to 64 bits.
6667
6668         * basic-float.cs: Add a test for this.
6669
6670         Fixed part of #467201.
6671
6672 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6673
6674         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6675
6676         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6677         This behavior is compatible with MS.
6678
6679         * iltest.il.in: Add a test for this.
6680
6681         Fixed part of #467201.
6682
6683 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6684
6685         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6686
6687         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6688         change the precision of the value.
6689
6690         * cpu-x86.md: Define len for float_conv_to_r4.
6691
6692         * basic-float.cs: Add a test for this.
6693
6694         Fixed part of #467201.
6695
6696 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6697
6698         * mini.c: Adjust locking order to the new semantics where the loader lock
6699         comes first.
6700
6701 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6702
6703         * aot-runtime.c:
6704         * mini-amd64.c:
6705         * mini-arm.c:
6706         * mini-ia64.c:
6707         * mini-mips.c:
6708         * mini-ppc.c:
6709         * mini-sparc.c:
6710         * mini-trampolines.c:
6711         * mini-x86.c:
6712         * mini.c:
6713         * tramp-alpha.c:
6714         * tramp-amd64.c:
6715         * tramp-arm.c:
6716         * tramp-hppa.c:
6717         * tramp-ia64.c:
6718         * tramp-mips.c:
6719         * tramp-ppc.c:
6720         * tramp-s390.c:
6721         * tramp-s390x.c:
6722         * tramp-sparc.c:
6723         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6724
6725 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6726
6727         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6728         as it is incorrect.
6729
6730 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6731
6732         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6733         for cctors if needed.
6734
6735 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6736
6737         * mini-ppc.c: Fix build on Darwin.
6738
6739 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6740
6741         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6742         version instead of 3 as valgrind doesn't like version 3.
6743
6744         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6745
6746         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6747         usable for hashing methods.
6748         (emit_extra_methods): Use the new hash to avoid putting every method in the
6749         same hash bucket.
6750
6751         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6752
6753         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6754         whenever a method ref could match a method.
6755         
6756         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6757         test to fail.
6758         
6759         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6760         methods refs.
6761
6762         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6763
6764         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6765         the encoding buffer.
6766
6767         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6768         mono_method_get_header () on inflated methods as an optimization.
6769
6770 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6771
6772         * ssa.c (fold_ins): Fix another crash if the instruction following the
6773         switch was optimized away.
6774
6775 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6776
6777         Contributed under the terms of the MIT/X11 license by Steven
6778         Munroe <munroesj@us.ibm.com>.
6779
6780         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6781
6782 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6783
6784         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6785         around the mono_domain_alloc calls, it is now done by the functions
6786         themselves.
6787
6788         * aot-compiler.c (compile_method): Only add wrappers referenced by
6789         the method if compiling with full AOT.
6790         (mono_compile_assembly): Error out if --aot=full is specified on
6791         a platform where it is not supported.
6792
6793         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6794         on ARM too.
6795
6796         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6797         AOT support.
6798
6799         * aot-runtime.c (load_named_code): Handle 
6800         mono_arm_throw_exception_by_token.
6801
6802         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6803
6804         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6805         unaligned.
6806
6807         * Makefile.am (fullaotcheck): Exit if a test fails.
6808
6809         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6810         on ARM.
6811         (mono_compile_assembly): Handle the assembler failing.
6812
6813         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6814         accepting subsections of .bss.
6815
6816         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6817         was optimized away.
6818
6819         * aot-compiler.c: Remove some unused includes.
6820         
6821         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6822         now in MonoImageWriter.
6823
6824         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6825         code sequence which matches a non-virtual call. Fixes #472654.
6826
6827 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6828
6829         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6830         xdebug code.
6831         
6832         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6833         use the image/dwarf writers directly.
6834
6835         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6836         field.
6837
6838         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6839         MonoDwarfWriter.
6840
6841         * image-writer.h: Fix some typos.
6842
6843         * dwarfwriter.h dwarfwriter.c: New files.
6844         
6845         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6846         separate module.
6847
6848         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6849         argument to return unwind info.
6850
6851         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6852
6853         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6854         
6855         * aot-runtime.c (decode_method_ref): Add a case for 
6856         MONO_AOT_METHODREF_WRAPPER_NAME.
6857
6858         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6859         for AOT.
6860
6861         * aot-compiler.c (encode_method_ref): Use the new constants.
6862
6863         * aot-runtime.c (decode_method_ref): Ditto.
6864
6865         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6866         be compiled, not the icall itself.
6867
6868 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6869
6870         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6871         using decode_method_ref ().
6872
6873         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6874         convert it to an in32. Fixes #475859.
6875
6876         * arrays.cs: Add a test.
6877
6878 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6879
6880         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6881         OP_LCONV_TO_U2.
6882
6883         * basic-long.cs: Add a test.
6884
6885 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6886
6887         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6888         remove the frame pointer in leaf methods which don't receive any
6889         arguments, don't throw exceptions and don't do dynamic stack
6890         allocations.
6891
6892 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6893
6894         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6895         the fail_tramp changes. Hopefully fixes #475132.
6896
6897 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6898
6899         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6900         instead of mono_metadata_signature_dup_full.
6901
6902 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6903
6904         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6905         for processing jump tables. Fixes #473787.
6906
6907 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6908
6909         * mini-generic-sharing.c: mini_method_get_context() just calls
6910         mono_method_get_context_general() now.
6911
6912         * mini.c, mini.h: Moved get_object_generic_inst(),
6913         construct_object_context_for_method() and
6914         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6915
6916 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6917
6918         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6919         basic block fell through to its successor bblock without a branch. Fixes
6920         #474718.
6921
6922         * iltests.il.in: Add a test.
6923         
6924         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6925         (can_encode_patch): We can now handle arrays of generic parameters and
6926         array methods.
6927
6928         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6929
6930         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6931         the AOT file to avoid some #ifdefs in aot-runtime.c
6932
6933         * mini.h: Bump AOT file format version.
6934
6935 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6936
6937         * Makefile.am (fullaotcheck): Make this run the tests.
6938
6939         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6940
6941 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6942
6943         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6944         individually.  Fixes #473482.
6945
6946 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6947
6948         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6949
6950 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6951
6952         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6953         (mono_compile_assembly): Hush compile warnings about
6954         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6955         code path.
6956
6957 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6958
6959         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6960
6961         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6962
6963         * aot-compiler.c: Fix arm support.
6964
6965         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6966         img_writer_emit_unset_mode () function.
6967
6968         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6969         (mono_unwind_get_dwarf_pc_reg): Ditto.
6970
6971         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6972         Move almost all platform specific code to a set of arch_ functions, 
6973         and document them to ease porting.
6974         
6975         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6976
6977         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6978
6979         * aot-compiler.c: Extract the image writing functionality into a separate
6980         module to reduce the size of this file.
6981
6982 2009-02-09  Geoff Norton  <gnorton@novell.com>
6983
6984         * mini-s390.c: Fix the signature of emit_sig_cookie.
6985
6986 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6987
6988         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6989
6990         * aot-runtime.c (is_shared_got_patch): Ditto.
6991
6992         * aot-runtime.c (load_named_code): Cope with the fact that 
6993         decode_got_entry () won't decode the patch fully if its corresponding got
6994         entry is already filled.
6995         
6996         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6997         Initialize *ji.
6998         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6999
7000         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
7001         as the moving pointer instead of 'buf' for consistency with the rest of the
7002         codebase.
7003         (mono_arch_create_monitor_exit_trampoline): Ditto.
7004
7005         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
7006         generic_class_init trampolines.
7007         (add_generic_class): Extract some code from add_generic_instances () into a
7008         separate function so it can be called from other places too.
7009         (compile_method): Call add_generic_class () for the classes of inflated methods
7010         referenced by the method.
7011         (can_encode_patch): Allow references to generic parameters.
7012
7013         * aot-runtime.c: Add support the patches required by the new trampolines.
7014         
7015         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
7016         support.
7017
7018         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
7019         full-aot support.
7020
7021         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
7022         this from get_throw_pending_exception, make the signature full aot compatible.
7023
7024         * Makefile.am (fullaotcheck): New target to run full-aot tests.
7025
7026         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
7027
7028         * exceptions.cs: Add a test.
7029
7030 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
7031
7032         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
7033         use the DWARF_DATA_ALIGN constant instead.
7034
7035         * exception-<ARCH>.c: Update after the above change.
7036
7037         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
7038         dwarf unwinder.
7039
7040         * mini-arm.c: Enable the dwarf unwinder.
7041
7042         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
7043         instead of mono_class_setup_vtable ().
7044
7045 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
7046
7047         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
7048         dwarf unwinder.
7049
7050         * mini-x86.h: Enable the dwarf unwinder.
7051
7052 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
7053
7054         Fix mcs/tests/test-7.cs
7055         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
7056         2009-02-03.
7057
7058 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
7059
7060         * mini.c (print_jit_stats): Remove some unused statistics.
7061
7062 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7063
7064         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
7065
7066 2009-02-05  Mark Probst  <mark.probst@gmail.com>
7067
7068         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
7069         the method we get from mono_object_get_virtual_method() because
7070         that function does it properly, now.
7071
7072 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7073
7074         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
7075         opcodes. Fixes #472775.
7076
7077 2009-02-05  Mark Probst  <mark.probst@gmail.com>
7078
7079         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
7080         fact that mono_find_jit_info() sometimes returns the context
7081         corresponding to the jit info in new_ctx.  Fixes #472600.
7082
7083 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7084
7085         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
7086         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
7087         klass->enum_basetype directly.
7088
7089         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
7090         enum subtypes.
7091
7092         * unwind.c: Avoid 0 sized arrays.
7093
7094 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7095
7096         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
7097         size on systems with 64k pages. Fixes #471389.
7098
7099 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7100
7101         Contributed under the terms of the MIT/X11 license by Steven
7102         Munroe <munroesj@us.ibm.com>.
7103
7104         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
7105         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
7106         necessary.
7107
7108 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7109
7110         Contributed under the terms of the MIT/X11 license by Steven
7111         Munroe <munroesj@us.ibm.com>.
7112
7113         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
7114         comparison fix.
7115
7116         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
7117         The trampoline can be longer on PPC64.
7118
7119 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7120
7121         Contributed under the terms of the MIT/X11 license by Steven
7122         Munroe <munroesj@us.ibm.com>.
7123
7124         * mini-ppc.c: Compiler warning fixes and trivial code
7125         simplifications.
7126
7127 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7128
7129         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
7130         ins->dreg which could be a hardware register, not a vreg.
7131
7132         * aot-compiler.c (emit_method_dwarf_info): Ditto.
7133         
7134         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
7135         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
7136
7137         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
7138         
7139         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
7140         ->dreg, that is not the vreg we are looking for.
7141
7142         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
7143
7144         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
7145         LIVERANGE_END.
7146
7147         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
7148         strange crashes.
7149
7150 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
7151
7152         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
7153
7154         * aot-compiler.c (emit_line_number_info): Fix line number emission when
7155         the line diff is 0.
7156
7157         * aot-compiler.c: Add xdebug support on x86.
7158
7159         * unwind.c: Add x86 support.
7160         
7161         * aot-compiler.c (emit_exception_debug_info): Control the emission of
7162         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
7163
7164         * mini.c (mini_method_compile): Ditto.
7165         
7166         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
7167         the variable index.
7168
7169         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
7170         which mimic .push_section/.pop_section in GAS.
7171         
7172         * aot-compiler.c: Emit precise live range information for variables.
7173
7174         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
7175
7176         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
7177         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
7178         them.
7179
7180         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
7181         the live ranges of variables.
7182
7183         * mini.h (struct MonoMethodVar): Add two fields containing the live range
7184         of the variable in terms of native offsets.
7185
7186 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
7187
7188         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
7189         
7190 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7191
7192         Contributed under the terms of the MIT/X11 license by Steven
7193         Munroe <munroesj@us.ibm.com>.
7194
7195         * exceptions-ppc.c (restore_regs_from_context): Correct operand
7196         order (offset then base reg) for ppc_load_multiple_regs.
7197         (emit_save_saved_regs) Correct operand order for
7198         ppc_store_multiple_regs.
7199         (mono_arch_get_call_filter): Correct operand order for
7200         ppc_load_multiple_regs.
7201
7202         * mini-ppc.c (emit_memcpy): Fix operand order for
7203         ppc_load_reg_update and ppc_store_reg_update.
7204         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
7205         (mono_arch_emit_epilog): Correct operand order for
7206         ppc_load_multiple_regs.
7207
7208         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
7209         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
7210
7211 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7212
7213         * cpu-ppc64.md: Fixed storer4_memindex length.
7214
7215 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
7216
7217         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
7218         line number info.
7219         
7220         * aot-compiler.c (emit_line_number_info): Optimize this.
7221
7222 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7223
7224         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7225         
7226         * aot-compiler.c: Add debug info for methods without debug info by
7227         emitting an IL file and having the line number info referencing that file.
7228
7229         * aot-compiler.c: Optimize the size of the generated line number info.
7230
7231         * aot-compiler.c: Emit line number info in xdebug mode.
7232
7233         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7234         million arguments.
7235
7236 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7237
7238         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7239
7240         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7241         is used.
7242
7243 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7244
7245         * basic-calls.cs: Test for the weird crash found on arm.
7246         
7247 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7248
7249         * cpu-arm.md: Increase the size of storer8_membase_reg and
7250         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7251
7252         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7253         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7254         reg to LR otherwise we'll be loading/storing from just the offset.
7255
7256 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7257
7258         Question: if we are storing gint32's inside the "*native_offset",
7259         should we change the signature to "gint32 *native_offset" to
7260         ensure that we do not have type definition problems?
7261         
7262         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7263         an int * as this is what the other function expects, causes
7264         problems with Freescale's compiler that defined int32_t to be a
7265         long and makes int incompatible 
7266
7267 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7268
7269         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7270         filename conflict with bjam.
7271
7272 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7273
7274         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7275         as it might use decomposed ops.
7276
7277 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7278
7279         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7280
7281         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7282         is defined.
7283
7284         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7285
7286         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7287         offsets.
7288
7289         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7290         way registers are stored in MonoContext on arm.
7291
7292         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7293         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7294
7295         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7296
7297         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7298
7299         * mini.c (mini_init): Register mono_isfinite.
7300
7301         * jit-icalls.c (mono_isfinite): New jit icall.
7302
7303         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7304         
7305         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7306         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7307         the parent frame.
7308
7309 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7310
7311         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7312         separate frame and stack pointers, so we must use FP to find the register
7313         spill area.
7314         The FP reg is retrieved from the MonoContext::regs array.
7315
7316 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7317
7318         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7319         as FPA requires it.
7320
7321 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7322
7323         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7324         return R4 and R8 when not running under softfloat.
7325
7326         Fixes basic-calls.exe
7327
7328 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7329
7330         * mini-arm.c: Implement some overflow opcodes.
7331
7332 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7333
7334         * ssa.c: handle another alloca.h
7335
7336         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7337         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7338         MONO_ARCH_USE_SIGACTION. 
7339
7340         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7341         capability defines.
7342
7343         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7344
7345         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7346         PPC targets as sigaction does not exist on all platforms, define
7347         this on a per-platform basis.
7348
7349         Instead of erroring out if the platform is not defined, include
7350         mini-ppc-os.h, and expect that the OS specific setting provides
7351         the required information.   
7352
7353 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7354
7355         * aot-compiler.c: Fix --enable-minimal=aot.
7356
7357 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7358
7359         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7360         previous change.
7361
7362 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7363
7364         * exceptions-arm.c: Fix warnings.
7365
7366         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7367         ARM.
7368
7369         * mini-x86.c: Fix --enable-minimal=jit build.
7370
7371         * mini.c: Really fix --enable-minimal=jit build.
7372         
7373         * mini.c (construct_object_context_for_method): Move this outside
7374         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7375
7376         "Backported" of r124984 from 2.0 branch.
7377         
7378         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7379
7380         "Backport" of r124977 + r124978 from 2.0 branch.
7381         
7382         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7383         to avoid calling mono_exception_from_token () from the throw trampoline.
7384         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7385         for throwing corlib exceptions, this fixes full-aot support for corlib
7386         exceptions.
7387
7388         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7389
7390 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7391
7392         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7393         part of the changes to split the code in mini into operating
7394         system specific files.
7395
7396         This patch was done by copying mini.c to the respective files to
7397         preserve SVN history.
7398
7399 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7400
7401         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7402
7403 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7404
7405         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7406         remoting-invoke-with-check wrappers of shared methods.
7407
7408         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7409
7410 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7411
7412         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7413         optimization if the top of stack is the last instruction in the
7414         bblock.  Otherwise it might have been used after its definition.
7415         Fixes #469742.
7416
7417 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7418
7419         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7420         method as well when get_vcall_slot () fails to match a code sequence.
7421
7422         * mini-arm.c: Fix the android build, which doesn't have
7423         __aeabi_read_tp.
7424
7425 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7426
7427         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7428         the s390x build.
7429
7430 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7431
7432         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7433
7434 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7435
7436         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7437         and put its id into jinfo->used_regs. This is only used on amd64,
7438         which is currently the only platform generating unwind info.
7439
7440         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7441         the dwarf unwinder. This is required to correctly handle async exceptions
7442         like thread abort and stack overflows, which can happen while a method
7443         is in the middle of its prolog or epilog.
7444         
7445         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7446         the unwind info belonging to an AOTed method.
7447
7448         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7449         into cfg->unwind_ops.
7450         
7451         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7452
7453         * mini.c (mini_init): Call mono_unwind_init ().
7454         (mini_cleanup): Call mono_unwind_cleanup ().
7455
7456         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7457         unwind info to be shared between methods.
7458
7459         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7460         saved in the LMF.
7461
7462         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7463         get_throw_pending_exception () to avoid initialization races.
7464
7465         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7466         mono_arch_exceptions_init () function.
7467
7468         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7469
7470 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7471
7472         * mini.c (mono_get_domain_intrinsic): New helper function.
7473         (mono_get_thread_intrinsic): Ditto.
7474
7475         * mini-arm.c mini-ia64.c: Use the new helper functions.
7476         
7477         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7478         the last constrained_call change, since it is needed in the non-AOT
7479         case as well.
7480
7481         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7482         
7483         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7484         mono_get_lmf_addr () on arm eabi linux.
7485
7486 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7487
7488         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7489         code sequence which matches a non-virtual call.
7490
7491 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7492
7493         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7494         stack pointer (r1).
7495
7496 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7497
7498         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7499         runtime-invoke wrappers, since they are also shared based on signature.
7500
7501 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7502
7503         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7504         info from the (correct) context.
7505
7506 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7507
7508         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7509         
7510         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7511         using dwarf unwinding info. Not yet used.
7512
7513         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7514
7515 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7516
7517         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7518         descriptors.
7519
7520         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7521         special case and handle mono_arch_delegate_invoke_impl() returning
7522         function descriptors.
7523
7524         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7525         trampolines return function descriptors, too.
7526
7527 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7528
7529         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7530         out_of_line optimization.
7531
7532 2009-01-21  Martin Baulig  <martin@ximian.com>
7533
7534         * mini.h
7535         (MonoCompile): Added `disable_deadce_vars' to disable removing
7536         unused variables.
7537
7538         * mini.c
7539         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7540         inside the debugger.
7541
7542         * liveness.c (mono_analyze_liveness): Don't remove any unused
7543         variables if `cfg->disable_deadce_vars' is set.
7544
7545 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7546
7547         * method-to-ir.c: Only apply exception constructor optimization if
7548         the the method actually belongs to an exception class.  Fixes
7549         #467456.
7550
7551 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7552
7553         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7554         change inside a #ifdef __mono_ppc64__.
7555
7556         * aot-compiler.c (compile_method): Remove the previous limitation.
7557
7558         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7559         on type variables in AOTed code.
7560         
7561         * aot-compiler.c (compile_method): Skip generic methods having type 
7562         constraints on their generic parameters.
7563
7564         * aot-compiler.c (compile_method): Check for methods which cannot be
7565         encoded inside RGCTX_FETCH patches as well.
7566
7567         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7568         build.
7569
7570 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7571
7572         * method-to-ir.c: Force the vtable variable in shared generic code
7573         for the case that they might show up on a stack trace where they
7574         are needed.
7575
7576         * mini-exceptions.c: Save and use generic sharing info as well as
7577         IP in stack traces to resolve shared generic instantiations.
7578
7579 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7580
7581         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7582         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7583
7584 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7585
7586         * method-to-ir.c: Do generic sharing for array constructors.
7587
7588 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7589
7590         * mini-exceptions.c (mono_print_thread_dump): Add information
7591         about the thread state using wapi_current_thread_desc.
7592
7593 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7594
7595         * basic-simd.cs: Tests for the new constructors. 
7596
7597 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7598
7599         * mini-ops.h: Added OP_EXPAND_*
7600
7601         * cpu-x86.md: Same.
7602
7603         * mini-x86.c (mono_arch_output_basic_block): Same.
7604         
7605         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7606
7607 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7608
7609         * iltests.il.in: Add a test for #467385.
7610
7611 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7612
7613         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7614         thread been cleaned up is not the same currently in execution.
7615
7616         Fixes appdomain-unload crashes on windows, osx and linux variants
7617         without the __thread keyword.
7618
7619 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7620
7621         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7622         (koush@koushikdutta.com). Implement this for android.
7623
7624         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7625         begins with a digit.
7626
7627         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7628         mono_marshal_get_write_barrier ().
7629
7630 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7631
7632         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7633         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7634         that pass them on a register pair.
7635
7636         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7637         test was crashing due to that.
7638
7639 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7640
7641         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7642         trampoline code. Include ucontext.h only if available.
7643
7644 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7645
7646         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7647         and doesn't check whether it's sharable, like it was before
7648         removing the shared generics hash.  This brings IronPython
7649         performance back to what it was before that change.
7650
7651 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7652
7653         * method-to-ir.c: Handle delegate invocation optimization earlier,
7654         otherwise it would be handled (much more slowly) by the
7655         final/sealed optimization.
7656
7657 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7658
7659         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7660         domain is not set. Fixes #465864.
7661
7662 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7663
7664         * method-to-ir.c: Don't stop sharing of generic methods with catch
7665         clauses - we already handle those.
7666
7667 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7668
7669         * mini.c, mini.h: lookup_generic_method() is now
7670         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7671         making the shared_generics_hash obsolete.
7672
7673 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7674
7675         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7676         use the red zone.  Make room on the stack first and then use it,
7677         not the other way around.
7678
7679 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7680
7681         * mini.c (mini_init): Call mono_xdebug_init ().
7682
7683         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7684
7685 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7686
7687         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7688
7689         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7690         trampolines.
7691
7692         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7693         debug+unwind info for trampolines.
7694
7695         * mini.c (mono_create_unwind_op): New helper function.
7696
7697         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7698
7699 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7700
7701         * aot-compiler.c: Fix the build.
7702
7703 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7704
7705         * Makefile.am: Update dtrace-prelink.sh location.
7706
7707 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7708
7709         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7710         optimization. Fixes #464520.
7711
7712 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7713
7714         * mini-amd64.c : Adding code to save/restore non-volatile registers
7715            on Winx64.
7716
7717         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7718           registers on Winx64.
7719
7720         Contributed under MIT/X11 license.
7721
7722 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7723
7724         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7725         __GNUC_MINOR__ which can break when the major version changes.
7726
7727 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7728
7729         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7730
7731 2009-01-07  Geoff Norton  <gnorton@novell.com>
7732
7733         * helpers.c:  Allow mono -v -v -v to work on darwin.
7734
7735 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7736
7737         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7738           pattern. 
7739
7740         Contributed under MIT/X11 license.
7741
7742 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7743
7744         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7745         instead of directly accessing type->data.klass. Fixes #462016.
7746         (mono_allocate_stack_slots_full): Ditto.
7747
7748         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7749         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7750
7751         * aot-compiler.c (emit_plt): Fix ARM build.
7752
7753 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7754
7755         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7756         
7757         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7758         change.
7759
7760         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7761         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7762         #463357.
7763
7764         * iltests.il.in: Add a regression test.
7765
7766 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7767
7768         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7769
7770 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7771
7772         * basic-simd.cs: Add a regression test for #462457.
7773
7774 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7775
7776         * mini-ops.h: Add a definition of XPHI.
7777
7778         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7779
7780         * ssa.c (op_phi_to_move): Handle XPHI.
7781
7782         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7783
7784         Fixes #462457
7785
7786 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7787
7788         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7789
7790 2008-12-31  Geoff Norton  <gnorton@novell.com>
7791
7792         * mini-ppc.c: The prolog size allocated can be too small for darwin
7793         ppc32 under certain circumstances.  Also fix a small logic bug.
7794
7795 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7796
7797         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7798         while loading AOT methods.
7799
7800         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7801         since only the former is nulled out after a successful cast. This prevents
7802         crashes with rethrown exceptions when using --debug=casts.
7803
7804 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7805
7806         * mini.h: New macro for checking whether a method is final,
7807         i.e. whether the method or its class is marked final.
7808
7809         * method-to-ir.c: Use the new macro for all final-checks
7810         consistently.  Fixes the crash in the System.ServiceModel tests.
7811
7812 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7813
7814         * mini-exceptions.c (get_exception_catch_class): Corrected another
7815         overly strict assertion.
7816
7817 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7818
7819         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7820         Clobbering it is not allowed because the caller might use it as
7821         the vtable register in the interface call.
7822
7823 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7824
7825         * mini-exceptions.c (get_exception_catch_class): Corrected an
7826         overly strict assertion.
7827
7828 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7829         
7830         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7831
7832         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7833
7834         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7835
7836         * cpu-mips.md: correct lengths for certain long_ opcodes.
7837
7838         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7839
7840         * 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().
7841         
7842 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7843
7844         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7845         
7846 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7847         
7848         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7849         
7850 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7851
7852         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7853         next basic block.
7854         
7855 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7856
7857         * 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
7858
7859         * 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)
7860         
7861 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7862         
7863         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7864         
7865 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7866
7867         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7868         gshared code. Fixes #458947.
7869
7870         * generics.cs: Add a test.
7871
7872 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7873         
7874         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7875         
7876         * mini-mips.c: first pass n32 code generation.
7877
7878         * mini-mips.h: datatypes and defines for n32 support.
7879
7880         * exceptions-mips.c: first pass n32 code generation.
7881         
7882         * tramp-mips.c: first pass n32 code generation.
7883         
7884         * cpu-mips.md: add long_ opcodes.
7885         
7886 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7887
7888         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7889
7890         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7891         
7892         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7893         
7894         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7895
7896         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7897
7898         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7899
7900         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7901
7902         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7903
7904         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7905
7906 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7907
7908         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7909
7910 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7911
7912         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7913
7914 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7915
7916         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7917         descriptors for helper functions directly in front of the code.
7918
7919 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7920
7921         * method-to-ir.c: Removed an unnecessary assertion.
7922
7923 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7924
7925         * method-to-ir.c: Merge SGEN changes from the old JIT.
7926
7927 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7928
7929         * driver.c (compile_all_methods_thread_main): Handle failure of
7930         mono_get_method ().
7931
7932 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7933
7934         * mini-ppc.c: Merged with mini-ppc64.c.
7935
7936         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7937
7938         * Makefile.am: Use the same sources for PPC and PPC64.
7939
7940         * mini-ppc64.c: Removed.
7941
7942 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7943
7944         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7945         code to mono_bb_is_fall_through.
7946         
7947         * branch-opts.c (mono_remove_critical_edges): Same.
7948
7949 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7950
7951         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7952         expect that an OP_BR_REG will be there.
7953
7954 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7955
7956         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7957         for the many branch ops. The original check miss OP_BR_REG.
7958
7959         Fixes #457574.
7960         
7961 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7962
7963         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7964
7965 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7966
7967         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7968         while holding the aot lock.
7969
7970 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7971
7972         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7973         
7974 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7975
7976         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7977           to release all runtime callable wrappers held by the runtime.
7978
7979         Contributed under MIT/X11 license.
7980
7981 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7982
7983         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7984           for Winx64.
7985
7986         Contributed under MIT/X11 license.
7987
7988 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7989
7990         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7991         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7992
7993 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7994
7995         * cpu-mips.md: fix ckfinite length
7996
7997         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7998         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7999         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
8000         
8001 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
8002
8003         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
8004         
8005 2008-12-08  Geoff Norton  <gnorton@novell.com>
8006
8007         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
8008         size by 8 bytes as well.
8009
8010 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8011
8012         * basic-simd.cs: Fix method names for Vector16b.
8013         
8014 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8015
8016         * basic-simd.cs: Fix method names for Vector16sb.
8017
8018 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8019
8020         * basic-simd.cs: Fix method names for Vector8us.
8021         
8022 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8023
8024         * basic-simd.cs: Fix method names for Vector8s.
8025         
8026 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8027
8028         * basic-simd.cs: Fix method names for Vector4ui.
8029
8030 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8031
8032         * basic-simd.cs: Fix method names for Vector2l.
8033
8034 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8035
8036         * basic-simd.cs: Fix method names for Vector2d.
8037
8038 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8039
8040         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
8041         that are extension methods.
8042
8043 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8044
8045         * basic-simd.cs: Fix method names for Vector4f.
8046
8047 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
8048
8049         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
8050         as such. Fixes #456669.
8051
8052 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
8053
8054         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
8055         
8056 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
8057
8058         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
8059         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
8060         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
8061         (mips_adjust_stackframe): handle FP spills
8062                 
8063         * mini-ops.h: add mips_mtc1_s2
8064         
8065         * cpu-mips.md: add mips_mtc1_s2
8066         
8067 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
8068
8069         * unwind.c: New file, move the unwind info encoding functions here from
8070         aot-compiler.c, so they could be used at runtime too.
8071
8072 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
8073
8074         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
8075         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
8076         
8077 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
8078
8079         * mini-mips.c: cleanup warnings
8080         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
8081         (mips_adjust_stackframe): handle case of taking the address of stack locals
8082         
8083 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8084
8085         * aot-compiler.c: Implement a few functions missing from the asm writer.
8086         (emit_method_code): Only write symbols for methods when using the bin
8087         writer, since the assembler can't deal with the characters in our method
8088         names.
8089
8090         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
8091
8092         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
8093         call.
8094
8095         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
8096         a bit to also restore %rax.
8097
8098 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8099
8100         * mini-ppc.c: Some simple merges from mini-ppc64.c.
8101
8102 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8103
8104         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
8105         arguments.
8106
8107 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8108
8109         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
8110
8111         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
8112         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
8113
8114         * exceptions-ppc64.c: Removed.
8115
8116         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
8117
8118 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8119
8120         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
8121         tramp-ppc64.c.
8122
8123         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
8124
8125         * tramp-ppc64.c: Removed.
8126
8127 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8128
8129         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
8130         the TYPESPEC table.
8131
8132 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8133
8134         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
8135
8136         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
8137         mini-ppc.h instead of mini-ppc64.h.
8138
8139         * mini-ppc64.h: Removed.
8140
8141 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8142
8143         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
8144         
8145         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
8146         
8147 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8148
8149         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
8150         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
8151         code easier.
8152
8153 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8154
8155         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
8156
8157 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8158
8159         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
8160
8161 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8162
8163         * basic-simd.cs: Tests for operator == and != on Vector4f.
8164
8165 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8166
8167         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
8168
8169         * simd-intrinsics.c: Kill useless enum.
8170
8171 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8172
8173         * cpu-mips.md: add long_conv_to_ovf_i4_2
8174         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
8175
8176 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8177
8178         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
8179         
8180         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
8181
8182 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8183
8184         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
8185         
8186 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8187
8188         * basic-simd.cs: Add tests for new methods.
8189
8190 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8191
8192         * simd-intrinsics.c: Add support for operator == and !=
8193         on Vector4(u)i.
8194
8195         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
8196
8197 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8198
8199         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
8200
8201 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
8202
8203         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
8204
8205         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
8206         MONO_PATCH_INFO_ICALL_ADDR.
8207
8208         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
8209
8210         * aot-compiler.c: Resurrect full-aot support.
8211
8212 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8213
8214         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
8215         
8216 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8217
8218         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
8219         
8220 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8221
8222         * basic-simd.cs: Fix tests to work under ppc.
8223         Remove tests for methods that will be removed.
8224
8225 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8226
8227         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8228         generic type (via a typedef or typeref) correctly.
8229
8230 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8231
8232         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8233         diagnose an assertion failure.
8234
8235 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8236
8237         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8238         Fix trampoline size.
8239
8240         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8241         conversion opcodes are implemented natively instead via emulation.
8242
8243 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8244
8245         * cpu-mips.md: remove mips_xori
8246
8247         * mini-ops.h:  remove mips_xori
8248
8249         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8250
8251         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8252         
8253         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8254         
8255 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8256
8257         * cpu-mips.md: fix instruction lengths.
8258
8259         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8260
8261         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8262
8263         * mini-ops.h: fix slti / sltiu op profiles.
8264         
8265 2008-12-02  Martin Baulig  <martin@ximian.com>
8266
8267         * method-to-ir.c (mono_method_to_ir): Disable debugging
8268         information for the init locals block to make the debugger stop
8269         after all locals have been initalized.
8270
8271 2008-12-02  Martin Baulig  <martin@ximian.com>
8272
8273         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8274         running inside the debugger.
8275
8276 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8277
8278         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8279         is enabled.
8280
8281         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8282         alu->alu imm optimization which only shows if deadce is disabled.
8283
8284         * aot-compiler.c: Rename the function names for the binary and asm writers
8285         so they can coexist in the same process. Rework the xdebug code to use the
8286         asm writer. This avoids the need to call into the runtime to dump the
8287         debugging info. Add more debugging info for types.
8288
8289         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8290
8291         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8292         cpu description tables, they can't occur in cpu-<ARCH>.md.
8293
8294         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8295         the stack in CEE_LDFLDA. Fixes #450542.
8296
8297         * generics.cs: Add a new test.
8298
8299 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8300
8301         * mini-ops.h: updated MIPS opcodes
8302         * mini-mips.c: decompose long opts
8303         * mini-mips.h: decompose long opts
8304         
8305 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8306
8307         * cpu-mips.md: fix length on int_rem_un
8308         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8309         
8310 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8311
8312         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8313
8314         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8315
8316 2008-11-29  Martin Baulig  <martin@ximian.com>
8317
8318         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8319         mono_debug_using_mono_debugger() in addition to the
8320         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8321
8322 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8323
8324         * mini-ops.h: updated more MIPS opcodes
8325         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8326         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8327         
8328 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8329
8330         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8331
8332 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8333
8334         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8335         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8336         * mini-ops.h: correct selected mips opcode entries
8337         
8338 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8339
8340         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8341         make them work.
8342
8343 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8344
8345         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8346
8347 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8348
8349         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8350         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8351         * mini-mips.h: disable IMT
8352         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8353         
8354 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8355
8356         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8357
8358 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8359
8360         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8361
8362 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8363
8364         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8365         consistency.
8366
8367 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8368
8369         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8370         for Set/GetVector aligned versions.
8371
8372 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8373
8374         * basic-simd.cs: Add tests for Get/SetVector.
8375
8376 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8377
8378         * mini.c: Removed g_slist_append_mempool().  Now in
8379         metadata/mempool.c.
8380
8381 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8382
8383         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8384         size properly and make the bounds check optional.
8385
8386         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8387         for SetVector and IsAligned.
8388
8389 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8390
8391         * mini.c: Remove unused mono_normalize_opcodes () function.
8392
8393 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8394
8395         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8396         using the new atomic add ops now.
8397
8398         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8399         add.
8400
8401 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8402
8403         * mini-ppc64.c: Several fixes.
8404
8405 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8406
8407         * cpu-mips.md: added jump_table
8408         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8409
8410 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8411
8412         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8413
8414 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8415
8416         * mini-ops.h: corrected a handful of MIPS opcodes.
8417
8418 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8419
8420         * aot-compiler.c: MIPS to use ELF writer
8421
8422 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8423
8424         * mini-codegen.c: remove MIPS specific assert.
8425
8426 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8427
8428         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8429         fixes.  PPC64 now passes most of the runtime regressions.
8430
8431 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8432
8433         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8434         volatile intervals a bit.
8435
8436 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8437
8438         * basic-long.cs: New test case.
8439
8440 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8441
8442         * mini.c (mini_method_compile): Disable globalra for large methods for 
8443         now.
8444
8445         * regalloc2.c (order_moves): Add fp support.
8446
8447         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8448         source bblock ends with an OP_BR_REG.
8449
8450         * ratests.cs: Add a new test.
8451
8452 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8453
8454         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8455         sharing.  PPC64 now passes generics.exe.
8456
8457 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8458
8459         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8460
8461 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8462
8463         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8464         memory when mono_jit_info_table_find () can't find the method in the
8465         LMF case.
8466
8467         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8468         AOTed code too.
8469         
8470         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8471         writer too.
8472
8473 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8474
8475         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8476         Several fixes.  PPC64 now runs exceptions.exe and
8477         devirtualization.exe.
8478
8479 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8480
8481         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8482         arrays.exe and basic-math.exe.
8483
8484 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8485
8486         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8487         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8488
8489 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8490
8491         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8492
8493 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8494
8495         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8496
8497         * ir-emit.h: Move macros from method-to-ir.c to here.
8498
8499 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8500
8501         * mini-ops.h: Correct the long simd ops to use LREG.
8502
8503 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8504
8505         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8506         
8507         * mini-ops.h: Correct the dreg type of a few long opcodes.
8508
8509         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8510         Add netbsd support.
8511
8512 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8513
8514         * mini-ppc.c: remove negative stack references in epilog
8515         for platforms that don't support the red zone.
8516
8517 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8518
8519         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8520         point regs.  Now PPC64 passes basic-calls.exe.
8521
8522 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8523
8524         * basic-simd.cs: Add tests for accessors of Vector2l.
8525
8526 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8527
8528         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8529
8530         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8531         
8532         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8533
8534 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8535
8536         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8537         PPC64 passes basic-long.exe.
8538
8539 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8540
8541         * decompose.c: Decompose carry and overflow add on PPC64 like on
8542         other 64 bit archs.  Don't decompose sub at all on PPC64.
8543
8544         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8545         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8546         basic-long.exe.
8547
8548 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8549
8550         * basic-simd.cs: Add tests for accessors of Vector2d.
8551
8552 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8553
8554         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8555
8556         * cpu-x86.md: Same.
8557
8558         * mini-x86.c (mono_arch_output_basic_block): Same.
8559         
8560         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8561
8562 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8563
8564         * basic-simd.cs: Add tests for accessors of Vector4f.
8565
8566 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8567
8568         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8569
8570         * cpu-x86.md: Same.
8571
8572         * mini-x86.c (mono_arch_output_basic_block): Same.
8573         
8574         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8575
8576 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8577
8578         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8579
8580 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8581
8582         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8583
8584         * cpu-x86.md: Same.
8585
8586         * mini-x86.c (mono_arch_output_basic_block): Same.
8587         
8588         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8589
8590 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8591
8592         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8593
8594 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8595
8596         * simd-intrinsics.c: Enable setters for Vector16sb.
8597
8598 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8599
8600         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8601
8602         * cpu-x86.md: Same.
8603
8604         * mini-x86.c (mono_arch_output_basic_block): Same.
8605         
8606         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8607
8608 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8609
8610         * simd-intrinsics.c: Implement setter for Vector8us.
8611
8612 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8613
8614         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8615         for dead variables.
8616
8617 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8618
8619         * mini-ppc.c: remove references to the red zone in the prolog
8620         (for systems that don't support it).
8621
8622 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8623
8624         * cpu-ppc64.md: Fixed a few instruction lengths.
8625
8626         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8627         now.
8628
8629 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8630
8631         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8632         basic.exe now.
8633
8634 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8635
8636         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8637
8638 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8639
8640         * mini-ops.h: Added OP_INSERT_I2.
8641
8642         * cpu-x86.md: Same.
8643
8644         * mini-x86.c (mono_arch_output_basic_block): Same.
8645         
8646         * simd-intrinsics.c: Implement setter for Vector8s.
8647
8648         * simd-methods.h: Add the names of get setters of Vector8s.
8649
8650 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8651
8652         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8653         
8654         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8655         parameters.
8656
8657         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8658
8659 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8660
8661         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8662         for PPC64.  An empty program runs now.
8663
8664 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8665
8666         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8667
8668         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8669         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8670         info for JITted code is emitted into a shared library, loadable into gdb.
8671
8672 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8673
8674         * Makefile.am: Changes to build PPC64.
8675
8676         * mini-arch.h: Include mini-ppc64.h on PPC64.
8677
8678 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8679
8680         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8681         in PPC code up to r119147.
8682
8683 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8684
8685         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8686         cpu-ppc64.md: Changes for PPC64.
8687
8688         Based on code submitted by andreas.faerber@web.de at
8689         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8690         X11/MIT license.
8691
8692 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8693
8694         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8695         cpu-ppc64.md: Copied from the corresponding PPC files from
8696         r118846.
8697
8698 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8699
8700         * mini-ops.h: Added OP_ROUND.
8701
8702         * cpu-x86.md: Added round.
8703
8704         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8705
8706         * basic-math.cs: Added test_0_round to test rounding.
8707
8708         Contributed under MIT/X11 license.
8709
8710 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8711
8712         * aot-compiler.c : Fix the Winx64 build.
8713
8714         Contributed under MIT/X11 license.
8715
8716 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8717
8718         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8719         in OP_EXTRACT_R8 to avoid possible stack corruption.
8720
8721 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8722
8723         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8724
8725         * cpu-x86.md: Added extract_r8.
8726
8727         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8728         
8729         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8730         a couple of OP_EXTRACT_I4.
8731
8732         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8733
8734         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8735
8736 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8737
8738         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8739         and not 4.1. 
8740
8741 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8742
8743         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8744         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8745
8746         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8747         are not needed any more.
8748
8749         * mini.h: Remove the unused INS_LIST macros.
8750
8751         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8752         longer needed.
8753
8754         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8755         ir-emit.h.
8756
8757         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8758         mono_alloc_ireg () instead.
8759
8760         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8761         macros.
8762
8763         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8764         on amd64.
8765
8766         * aot-runtime.c (load_aot_module): Disable AOT when running under
8767         CAS.
8768
8769         * mini-amd64.h: Change the monitor fastpath defines to check for
8770         !PLATFORM_WIN32 so they work on *bsd too.
8771
8772         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8773
8774         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8775
8776         * mini.h (MonoCompile): Remove new_ir flag.
8777
8778         * regalloc.h regalloc.c: Remove unused code.
8779
8780         * cpu-*.md: Remove more unused opcodes.
8781
8782         * simple-cee-ops.h simple-mini-ops.h: Removed.
8783
8784         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8785         
8786 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8787
8788         * aliasing.h: Removed.
8789
8790         * *.c: Remove references to aliasing.h and inssel.h.
8791
8792         * mini.c: Remove additional unused functions.
8793
8794         * mini-ops.h cpu-*.md: Remove unused opcodes.
8795
8796 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8797
8798         Remove the old JIT code.
8799
8800         * inssel*.brg: Removed.
8801
8802         * ssa.c abcremoval.c aliasing.c: Removed.
8803
8804         * ssa2.c: Renamed to ssa.c.
8805
8806         * abcremoval2.c: Renamed to abcremoval.c.
8807
8808         * *.c: Removed all !cfg->new_ir code.
8809
8810         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8811         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8812
8813         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8814         
8815 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8816
8817         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8818         to simplify the code and cut back on the number of global symbols in the AOT
8819         file.
8820         
8821         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8822
8823 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8824
8825         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8826         with the got/got_info tables.
8827
8828         * mini.h: Bump AOT file format version.
8829         
8830         * unwind.h: New file, contains definitions for stack unwinding.
8831
8832         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8833         to cfg->unwind_ops.
8834         
8835         * aot-compiler.c: Generalize the emitting of unwind information to use the
8836         information in cfg->unwind_ops.
8837
8838         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8839
8840         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8841         AOT method frames. Enable writing symbols for methods by default.
8842
8843 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8844
8845         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8846         and make it work with vectors of element sizes 1, 2 and 4.
8847
8848         * simd-intrinsics.c: Enable getter for all vectors with element size
8849         1, 2 or 4.
8850
8851         * simd-methods.h: Add the names of other getters.
8852
8853         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8854
8855         * cpu-x86.md: Same.
8856
8857         * mini-x86.c: Same.
8858
8859 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8860
8861         * mini-ppc.h: portability fix.
8862
8863 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8864
8865         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8866         buggy and will overwrite it.
8867
8868 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8869
8870         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8871         Use it to emit local symbols for all methods so AOTed methods show up with
8872         their full name in gdb/valgrind output.
8873
8874 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8875
8876         * mini-ppc.c: portability fixes.
8877
8878 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8879
8880         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8881         entries out of the if (!generic_shared...) code so it is always done.
8882         (mono_class_init_trampoline): Do the patching when running under valgrind
8883         too, newer versions of valgrind have no problems with it.
8884
8885 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8886
8887         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8888         further sections.
8889
8890 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8891
8892         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8893         filters.
8894
8895 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8896
8897         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8898
8899 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8900
8901         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8902
8903         * cpu-x86.md: Same.
8904
8905         * mini-x86.c: Same.
8906
8907         * simd-intrinsics.c: Same.
8908
8909 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8910
8911         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8912
8913 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8914
8915         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8916         to work with more Vector types.
8917
8918 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8919
8920         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8921         store the elemens directly instead of using and intermediate.
8922
8923 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8924
8925         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8926
8927         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8928         to preserve %eax for aot plt trampolines.
8929
8930         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8931         (encode_method_ref): Flag synchronized methods so they won't go through
8932         the AOT trampoline.
8933
8934         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8935         wrappers.
8936
8937         * cpu-ia64.md (jmp): Increase max length.
8938
8939 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8940
8941         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8942         open generic classes.
8943
8944         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8945
8946         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8947         box+brtrue optimization since it causes test failures on x86.
8948
8949 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8950
8951         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8952
8953         * cpu-x86.md: Same.
8954
8955         * mini-x86.c: Same.
8956
8957         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8958         for simd ctor values. 
8959
8960         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8961         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8962
8963 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8964
8965         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8966         LogicalRightShift.
8967
8968         * simd-instrincs.c: Same.
8969
8970         * basic-simd.cs: Same.
8971
8972 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8973
8974         * ratests.cs: Add more tests.
8975
8976         * regalloc2.c (add_spill_code): Handle more corner cases.
8977
8978 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8979
8980         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8981         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8982         both the source an destination of an instruction.
8983
8984 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8985
8986         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8987         wapihandles.c: more portability changes.
8988
8989 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8990
8991         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8992         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8993         safe to execute in a signal handler and the kernel provides better
8994         the info in /proc/self/smaps. Avoid the assert on sigaction during
8995         cleanup.
8996
8997 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8998
8999         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
9000         do the bblock linking hack if it is actually needed.
9001
9002         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
9003         up linking.
9004
9005         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
9006         crash problem is fixed.
9007
9008         * branch-opts.c (mono_remove_critical_edges): Link up newly added
9009         bblocks.
9010
9011         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
9012         for catch clauses.
9013         (mini_method_compile): Set the starting value of next_vreg to 
9014         MAX_IREGS + MAX_FREGS when using globalra.
9015
9016         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
9017         filter clauses with BB_EXCEPTION_HANDLER.
9018
9019         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
9020
9021 2008-11-10  Mark Probst  <mark.probst@gmail.com>
9022
9023         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
9024         space for stdcall.  Fixes regressions on Win32.
9025
9026 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
9027
9028         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
9029         bblocks.
9030         (linear_scan): Remove an assert which doesn't seem to be needed.
9031
9032         * local-propagation.c (mono_local_deadce): Avoid a call to
9033         MONO_DELETE_INS which would screw up the instruction linking.
9034
9035         * mini.c (mono_decompose_op_imm): Make this work with globalra.
9036
9037         * regalloc2.c: Upgrade to work the current JIT code.
9038
9039 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
9040
9041         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
9042         case.
9043
9044         * aot-runtime.c: Remove some dead code.
9045
9046         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
9047         consistency.
9048         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
9049
9050         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
9051         trampolines using sscanf since atoi doesn't work on large unsigned values.
9052
9053         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
9054         Initialize code_size.
9055
9056 2008-11-08  Mark Probst  <mark.probst@gmail.com>
9057
9058         * method-to-ir.c (mini_emit_inst_for_method): Make
9059         Interlocked.CompareExchange work for Int arguments on 32 bit
9060         archs, as well.
9061
9062 2008-11-07  Mark Probst  <mark.probst@gmail.com>
9063
9064         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
9065
9066 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
9067
9068         * main.c Fix MSVC build.
9069
9070         Contributed under MIT/X11 license.
9071
9072 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9073
9074         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
9075         alignment larger than 8 bytes are aligned correctly, too.
9076
9077         * mini.c: Honor the min_align field of MonoClass when laying out
9078         the stack.
9079
9080 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
9081
9082         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
9083
9084         * aot-compiler.c (emit_plt): Fix a warning.
9085         
9086         * aot-compiler.c: Implement ARM support in the binary writer.
9087
9088 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9089
9090         * basic-simd.cs: Add test for getter with byref arg.
9091         Fix the naming of a few tests.
9092         Add missing checks to a test.
9093
9094 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
9095
9096         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
9097
9098         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
9099         most of the full-aot support for monitor enter/exit trampolines.
9100
9101         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
9102         enter/exit trampoline creation functions.
9103
9104         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
9105         make dist.
9106
9107 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
9108
9109         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
9110         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
9111         implement the needed functionality without adding crap to the runtime.
9112
9113 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
9114
9115         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
9116         non-x86 builds.
9117
9118         * mini.c (mono_build_date): New global version holding the build date in
9119         string format.
9120         
9121         * Makefile.am (buildver.c): Generate a file containing the build date.
9122
9123         * main.c: Set the build date from the generated file.
9124
9125         * mini.c (mono_get_runtime_build_info): New helper function returning build
9126         information in a string format.
9127         
9128         * driver.c (mono_main): Print the build date in --version.
9129
9130         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
9131         file when the bind-to-runtime-version option is used.
9132
9133 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9134
9135         * simd-intrinsics.c: Fix bug when using getters and byref args. 
9136
9137 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9138
9139         * simd-methods.h: Rename prefetch methods.
9140
9141         * simd-intrinsics.c: Same.      
9142
9143 2008-11-05  Mark Probst  <mark.probst@gmail.com>
9144
9145         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
9146         sizes.
9147
9148 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9149
9150         * aot-compiler.c: Use the bundled elf header files instead of depending on
9151         the system one.
9152         
9153         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
9154         mempool.
9155
9156         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
9157         on every call.
9158
9159 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
9160
9161         * cpu-x86.md: Add store nta ops.
9162
9163         * mini-ops.h: Same.
9164
9165         * mini-x86.c: Same.
9166
9167         * mini.h: Add an enum for simd prefetch modes.
9168
9169         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
9170         of store. Use the changed code to support store nta.
9171
9172         * simd-intrinsics.c: Add prefetch ops for all vector types.
9173
9174 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9175
9176         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
9177         threads.
9178         
9179         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
9180         names.
9181
9182         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
9183         trampolines.
9184
9185 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9186
9187         * mini-x86.c: Fixed commit.
9188
9189 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9190
9191         * aot-compiler.c (emit_plt): Align the plt section only on x86.
9192
9193 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9194
9195         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
9196         and MONITOR_EXIT, for the ASM fastpaths.
9197
9198         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
9199         available.
9200
9201         * mini.c, patch-info.h: Signature and patch infos for
9202         Monitor.Enter/Exit trampolines.
9203
9204         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
9205
9206         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
9207         Monitor.Enter/Exit ASM fastpath for Linux.
9208
9209 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9210
9211         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
9212
9213         * objects.cs: Add a new test.
9214         
9215         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
9216
9217         * aot-runtime.c (load_method): Run class initialization in the PLT case even
9218         if MONO_LOG_LEVEL is set.
9219
9220         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9221
9222         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9223
9224         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9225         
9226         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9227         of file offsets. Align the sections belonging to the data segment to 
9228         PAGESIZE.
9229
9230 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9231
9232         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9233         elf.h. Port it to amd64.
9234
9235 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9236
9237         * driver.c: Enable SIMD by default.
9238
9239 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9240
9241         * cpu-x86.md: Add prefetch op.
9242
9243         * mini-ops.h: Same.
9244
9245         * mini-x86.c: Same.
9246
9247         * mini.h: Add an enum for simd prefetch modes.
9248
9249         * simd-methods.h: Add prefetch function names.
9250
9251         * simd-intrinsics.c: Add prefetch ops for all vector types.
9252
9253 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9254
9255         * aot-compiler.c (emit_bytes): Speed this up a little.
9256
9257 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9258
9259         * aot-compiler.c: Add JIT time etc. statistics.
9260         
9261         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9262
9263         * mini.h (MonoCompile): Add 'got_offset' field.
9264
9265         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9266         method_got_offsets array.
9267
9268         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9269         wrappers.
9270
9271         * aot-compiler.c (compile_method): Add generic method instances referenced
9272         by the method to the list of methods to be compiled, this is required so if
9273         A<T> references B<T>, and another assembly references A<int>, then it will
9274         also get a copy of B<int>.
9275
9276         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9277         when checking for monitor enter/exit.
9278
9279 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9280
9281         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9282         for Monitor.Enter and Monitor.Exit if enabled.
9283
9284         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9285         Solaris.
9286
9287 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9288
9289         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9290         of an OP_MOVE. Fixes #440046.
9291
9292         * basic-long.cs: Add a new test.
9293
9294 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9295
9296         * mini.h: Add synchronization note for the managed counter-part.
9297
9298         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9299         returns the simd caps of the current cpu.
9300
9301 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9302
9303         * basic-simd.cs: Remove Console.WriteLine.
9304
9305 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9306
9307         * basic-simd.cs: New tests for Vector2ul.
9308
9309 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9310
9311         * simd-intrinsics.c: Add new vector type Vector2ul.
9312
9313 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9314
9315         * basic-simd.cs: New tests for Vector2l.
9316
9317 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9318
9319         * cpu-x86.md: Add long version of most packed int ops.
9320
9321         * mini-ops.h: Same.
9322
9323         * mini-x86.h: Same.
9324
9325         * simd-intrinsics.c: Add new vector type Vector2l.
9326
9327 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9328
9329         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9330
9331         * simd-methods.h: Remove SN_op_BitwiseXor.
9332
9333 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9334
9335         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9336         alignment.
9337
9338 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9339
9340         * basic-simd.cs: Test for Vector2d.
9341
9342         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9343         value.
9344
9345 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9346
9347         * cpu-x86.md: Add double version of all packed float ops.
9348
9349         * mini-ops.h: Same.
9350
9351         * mini-x86.h: Same.
9352
9353         * simd-intrinsics.c: Add new vector type Vector2d.
9354
9355         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9356
9357         * simd-methods.h: Add Duplicate.
9358
9359 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9360
9361         * basic-simd.cs: Test for packing with signed saturation.
9362
9363 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9364
9365         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9366         found in the TYPESPEC table.
9367
9368 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9369
9370         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9371         too.
9372
9373         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9374
9375         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9376         instead of the RVA, since the RVA can be changed by tools like the cil 
9377         stripper.
9378
9379         * method-to-ir.c (mono_method_to_ir2): Ditto.
9380
9381         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9382         (deserialize_variable): Ditto.
9383
9384 2008-10-25  Martin Baulig  <martin@ximian.com>
9385
9386         * debug-mini.c (write_variable): Use
9387         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9388
9389 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9390
9391         * cpu-x86.md: Add unsigned variants of packd and packw.
9392
9393         * mini-ops.h: Same.
9394
9395         * mini-x86.h: Emit the right instruction for packd and packw.
9396         Add unsigned variants of packd and packw.
9397
9398         * simd-intrinsics.c: Packd and packw were used in place of their
9399         unsigned variants. Change that.
9400         Add intrinsics for (Signed)PackWithSignedSaturation.
9401
9402         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9403
9404 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9405
9406         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9407
9408 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9409
9410         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9411
9412         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9413
9414         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9415         sse instructions.
9416
9417         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9418
9419 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9420
9421         * method-to-ir.c, mini.c: Special casing for the synchronized
9422         wrapper for the ldtoken+GetTypeFromHandle case.
9423
9424 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9425
9426         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9427
9428         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9429         created/split bblocks.
9430
9431 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9432
9433         * mini-ops.h: Add packed signed mul high.
9434         
9435         * cpu-x86.md: Same.
9436
9437         * mini-x86.c (mono_arch_output_basic_block): Same.
9438
9439         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9440
9441         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9442
9443 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9444
9445         * basic-simd.cs: Tests for Vector16sb.
9446
9447 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9448
9449         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9450
9451 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9452
9453         * mini-ops.h: Add packed signed min, max and compare greater.
9454         
9455         * cpu-x86.md: Same.
9456
9457         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9458         saturation.
9459
9460         * simd-methods.h: Add CompareGreaterThan.
9461
9462         * simd-methods.h: Remove CompareEquals.
9463
9464         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9465
9466         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9467
9468         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9469         CompareEqual.
9470
9471 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9472
9473         * basic-simd.cs: Fix tests due to change in the API.
9474
9475 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9476
9477         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9478
9479 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9480
9481         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9482
9483         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9484         inst_offset as this has invalid values for LDADDR.
9485
9486 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9487
9488         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9489
9490         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9491
9492 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9493
9494         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9495         for accessing field->data.
9496
9497 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9498
9499         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9500
9501 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9502
9503         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9504
9505         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9506
9507 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9508
9509         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9510         from the cfg mempool.
9511
9512 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9513
9514         * basic-simd.cs: Tests for new methods in Vector8us.
9515
9516 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9517
9518         * mini-ops.h: Add multiply and store high.
9519         
9520         * cpu-x86.md: Same.
9521
9522         * mini-x86.c (mono_arch_output_basic_block): Same.
9523
9524         * simd-methods.h: Same.
9525
9526         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9527         and CompareEqual.
9528
9529 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9530
9531         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9532         mono_class_setup_vtable ().
9533
9534         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9535         mono_class_get_vtable_entry () for accessing klass->vtable.
9536
9537         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9538
9539         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9540         found.
9541
9542         * method-to-ir.c (mono_save_token_info): Don't save references made from
9543         wrappers.
9544
9545         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9546         of generic instances.
9547
9548         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9549
9550 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9551
9552         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9553         OP_JMP depends on the method signature.  Calculate it properly.
9554
9555 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9556         
9557         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9558         called directly.
9559
9560         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9561         instances.
9562         (emit_extra_methods): Add another table mapping method indexes to 
9563         offsets in the extra_method_info table.
9564
9565         * mini.h: Bump AOT file format version.
9566         
9567         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9568         and mono_aot_get_method_from_token () into one function.
9569
9570 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9571
9572         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9573         separate counter.
9574
9575 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9576
9577         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9578         methods.
9579
9580         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9581         disable_aot.
9582
9583         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9584
9585         * mini.h: Bump aot file format version.
9586
9587         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9588         AOT file can contain native code for methods which are not in the METHOD
9589         table. Generate code for non-sharable generic instances of generic methods
9590         found in the METHODSPEC table.
9591         
9592         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9593         encoding generic type handles.
9594
9595         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9596         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9597
9598         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9599         macros + MONO_ADD_INS.
9600
9601         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9602         context as well.
9603
9604         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9605
9606         * mini.h: Bump aot file format version.
9607
9608         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9609
9610 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9611
9612         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9613         platforms, with definable stack alignment value.  Set to 16 now
9614         for all platforms.
9615
9616         * mini.c, mini.h, driver.c: Command line option for disabling
9617         stack alignment.
9618
9619 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9620
9621         * basic-simd.cs: Tests for new methods in Vector4ui.
9622
9623 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9624
9625         * mini-ops.h: Add packed int shuffle.
9626         
9627         * cpu-x86.md: Same.
9628
9629         * mini-x86.c (mono_arch_output_basic_block): Same.
9630
9631         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9632         extract mask, max, min, shuffle.
9633
9634         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9635
9636 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9637
9638         * basic-simd.cs: Tests for new methods in Vector8us.
9639
9640 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9641
9642         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9643         RuntimeTypeHandle, not a TypedReference.
9644
9645 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9646
9647         * simd-intrinsics.c: remove relocations.
9648
9649 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9650
9651         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9652         optimizations from the x86 backend.
9653
9654 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9655
9656         * simd-methods.h, simd-intrinsics.c: debloat method names and
9657         prepare for no relocations.
9658
9659 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9660
9661         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9662         
9663         * cpu-x86.md: Same.
9664
9665         * mini-x86.c (mono_arch_output_basic_block): Same.
9666
9667         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9668         extract mask, max, min and sum of absolute differences.
9669
9670         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9671         method name.
9672
9673 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9674
9675         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9676         Renamed one test for consistency.
9677
9678 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9679
9680         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9681         fix to the code that deal with other blocks.
9682
9683 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9684
9685         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9686
9687 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9688
9689         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9690         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9691         able to process the source reg.
9692
9693 2008-10-16  Martin Baulig  <martin@ximian.com>
9694
9695         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9696
9697         * inssel.brg: Add `OP_HARD_NOP'.
9698
9699         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9700
9701         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9702         `OP_HARD_NOP' instruction when running inside the debugger.
9703
9704         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9705         `OP_HARD_NOP' instruction when running inside the debugger.
9706
9707 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9708
9709         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9710         now works. The issue with the regalloc tripping up no longer
9711         happens.
9712
9713         * simd-intrinsics.c (load_simd_vreg): Same.
9714
9715 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9716         
9717         * basic-simd.cs: Tests for new Vector8ui methods.
9718
9719 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9720
9721         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9722         only for type. This fixes crashes where MonoInst::klass is checked
9723         for ops of type != VTYPE or OBJ.
9724
9725         * simd-intrinsics.c (load_simd_vreg): Same.
9726
9727 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9728
9729         * mini-ops.h: Add ops for packed shuffle/max/avg and
9730         extract mask.
9731         
9732         * cpu-x86.md: Same.
9733
9734         * mini-x86.c (mono_arch_output_basic_block): Same.
9735
9736         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9737         extract mask.
9738
9739         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9740         to emit extract mask op.
9741
9742         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9743         to emit word shuffles.
9744
9745 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9746
9747         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9748         the largest alignment needed by a variable, but at least
9749         sizeof(gpointer).
9750
9751 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9752
9753         * basic-simd.cs: Tests for the fixes in the last commit.
9754
9755 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9756
9757         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9758         no longer handles STACK_PTR input.
9759
9760         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9761
9762         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9763         get_simd_vreg   but handles STACK_PTR input.
9764
9765         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9766         as the input can be an arbitrary pointer.
9767
9768         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9769         LDADDR local optimization directly otherwise use a store op.
9770
9771 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9772
9773         * basic-simd.cs: Tests for dup low and dup high.
9774
9775 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9776
9777         * mini-ops.h: Add dup low and dup high ops.
9778         
9779         * cpu-x86.md: Same.
9780
9781         * mini-x86.c (mono_arch_output_basic_block): Same.
9782
9783         * simd-intrinsics.c (vector4f_intrinsics): Same.
9784
9785 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9786
9787         * basic-simd.cs: Tests for recently added functionality.
9788
9789 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9790
9791         * mini-ops.h: Add remaining sse1 fp ops.
9792         
9793         * cpu-x86.md: Add remaining sse1 fp ops.
9794
9795         * mini-x86.c (mono_arch_output_basic_block): Same.
9796
9797         * mini.h: Add enum for simd FP compare conditions.
9798
9799         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9800
9801         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9802         so the backed can generate the appropriate op.
9803
9804 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9805         This patch squeese one more byte from the SimdIntrinsc struct.
9806
9807         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9808         a a shift amount intead of simply or'ing it.
9809
9810         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9811
9812         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9813         byte so we can have an aditional flags field without increasing struct size.
9814
9815         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9816         against the simd_supported_versions bitmask.
9817
9818         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9819
9820 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9821
9822         * mini.c: remove rawbuffer code (the only use here is unsafe because
9823         it takes locks during signal handling and the kernel now provides much
9824         better info in proc/pid/smaps these days).
9825
9826 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9827
9828         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9829         OP_X86_PUSH_OBJ. Fixes #434620.
9830
9831         * objects.cs: Add a test.
9832         
9833 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9834
9835         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9836         that the packuswb/packusdw don't work with unsigned numbers for what
9837         would be negative numbers in signed format.
9838
9839         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9840         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9841
9842         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9843
9844         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9845
9846         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9847
9848         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9849
9850         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9851         add more ops.
9852
9853         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9854         version as the enum in mini.h.
9855
9856         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9857         for sse3 ops, check the simd_version field if present. This way the code
9858         works with all versions of sse.
9859
9860 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9861
9862         * simd-intrinsics.c: Fixed intrinsic name typo.
9863
9864         * mini.h: Added missing simd exported function.
9865
9866         * basic-simd.cs: Added tests for Vector4ui.
9867         Fixed broken test for Vector16b.
9868
9869 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9870
9871         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9872         the max length to 64.
9873
9874 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9875
9876         * method-to-ir.c: Only do the fast virtual generic method call for
9877         non-wrapper methods.
9878
9879         * mini.h, mini-trampolines.c: The new generic virtual remoting
9880         trampoline handles virtual method calls via the vtable (as done by
9881         the fast virtual generic method calls) to remoting proxies.
9882
9883         * mini.c (mono_jit_create_remoting_trampoline): For generic
9884         methods reate a generic virtual remoting trampoline.
9885
9886         * mini-amd64.h: Enable fast virtual generic method calls again.
9887
9888 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9889
9890         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9891         restore registers when doing tail calls.
9892
9893 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9894
9895         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9896         Vector4ui.
9897
9898 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9899
9900         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9901
9902 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9903
9904         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9905
9906 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9907
9908         * basic-simd.cs: Retrofit for API changes.
9909
9910 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9911
9912         * mini-ppc.c: Handle integer stack arguments for tail calls.
9913
9914 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9915
9916         * optflags-def.h: Removed sse3 optimization.
9917
9918         * driver.c: Same.
9919
9920         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9921         sse3.
9922
9923         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9924
9925         * mini.h: Added enumeration with simd versions.
9926
9927         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9928         for detecting SSE3.
9929
9930         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9931
9932         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9933
9934 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9935
9936         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9937
9938         * basic-simd.cs: Fixed test naming.
9939
9940 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9941
9942         * mini-ops.h: Added ops for packed and saturated math, shifts
9943         and packing/unpacking.
9944
9945         * cpu-x86.md: Added descriptors for the above ops.
9946
9947         * mini-x86.c: Added code to emmit the above ops.
9948
9949         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9950
9951 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9952
9953         * aot-compiler.c (compile_method): Enable AOT for generic code.
9954
9955         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9956
9957 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9958
9959         * mini.c: add a workaround for a common screwup that ends up blamed
9960         to mono (other processes blocking signal delivery).
9961
9962 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9963
9964         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9965         in the LDFLD/STFLD opcodes. Fixes #432673.
9966
9967         * iltests.il.in: Add a new test.
9968
9969 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9970
9971         * mini-arm.c: attach the thread in unmanaged->managed transitions
9972         using delegates (bug #433148).
9973
9974 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9975
9976        * basic-simd.cs: Use new ShuffleSel constants.
9977
9978 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9979
9980         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9981
9982         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9983         only disable simd intrinsics if no sse2 is detected.
9984
9985         * optflags-def.h: Added sse3.
9986
9987         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9988         is disabled.
9989
9990 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9991
9992         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9993         when adding delegate-invoke wrappers.
9994
9995 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9996
9997         * Makefile.am: Reenable the simd tests.
9998
9999 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10000
10001         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
10002           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
10003           other vreg is allocated to that hreg.
10004
10005         Contributed under MIT/X11 license.
10006
10007 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
10008
10009         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
10010         yet checked in.
10011
10012 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
10013
10014         * basic-simd.cs: New test suite for SIMD intrinsics.
10015
10016         * Makefile.am: Added new tests.
10017
10018 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
10019
10020         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
10021
10022         * mini-ops.h: Same.
10023
10024         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
10025
10026         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
10027         using SSE2 aware opcodes.
10028
10029         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
10030         is enabled, this code path is only reachable if conversion ops are emmited after
10031         mono_method_to_ir.
10032
10033         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
10034
10035         This optimization saves 6 bytes per conversion against the old version.
10036
10037 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10038
10039         * aot-compiler.c (compile_method): Don't skip methods referencing 
10040         generic methods without a corresponding entry in token_info_hash, since
10041         encode_method_ref () can handle all generic methods now.
10042
10043         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
10044         generic context is set.
10045         
10046         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
10047         generic sharing of LDTOKEN.
10048
10049 2008-10-06  Mark Probst  <mark.probst@gmail.com>
10050
10051         * mini-amd64.h: Temporarily disabled fast virtual generic method
10052         calls because it breaks the System.Runtime.Remoting tests.
10053
10054 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10055
10056         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
10057
10058         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
10059         so inlining actually works.
10060         (check_inline_caller_method_name_limit): Ditto.
10061
10062 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
10063
10064         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
10065         64 bit safety (from Olaf Hering and Andreas Farber).
10066
10067 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10068         
10069         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
10070         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
10071         unused virtual call support code.
10072
10073         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
10074         
10075         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
10076         which can't use aot trampolines.
10077         (decode_patch): Don't create aot trampolines for methods which can't use
10078         them.
10079
10080         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
10081         use aot trampolines.
10082
10083         * mini.h: Bump AOT image format version.
10084         
10085 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
10086
10087         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
10088         to save_token_info () since cmethod is inflated for constrained calls.
10089
10090         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
10091
10092 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
10093
10094         * Makefile.am: Add build rules for ppc64.
10095         This avoids the build failing at pedump with unresolved symbols
10096         due to lack of arch_sources. Instead it will now fail earlier
10097         due to lack of cpu-ppc64.md.
10098
10099         Contributed under MIT/X11 license.
10100
10101 2008-10-04  Mark Probst  <mark.probst@gmail.com>
10102
10103         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
10104         tail calls.
10105
10106         * iltests.il.in: Add test case for tail call with many arguments.
10107
10108 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10109
10110         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
10111         to the fast virtual generic method code until the aot case is fixed.
10112
10113 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10114
10115         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
10116
10117 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10118
10119         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
10120         thunks.
10121
10122 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10123         
10124         * simd-intrinsics.c: Forgot to add this one.
10125
10126         * mini-codegen.c: Fix macro in case SIMD is not supported.
10127
10128 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10129         
10130         This patch land initial JIT support for simd intrinsics.
10131
10132         * mini-x86.h: Added new define to make --enable_minimal work on x86.
10133
10134         * Makefile.am: Added simd-intrinsics.c
10135
10136         * simd-intrinsics.c: New file with simd instrinsic related
10137         code.
10138
10139         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
10140
10141         * cpu-x86.md: Add simd related instructions.
10142
10143         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
10144
10145         * driver.c: Added two new --regression variants.
10146
10147         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
10148
10149         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
10150
10151         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
10152         extract some complicated logic to helper functions.
10153
10154         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
10155
10156         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
10157
10158         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
10159         the specialized simplification pass.
10160
10161         * method-to-ir.c (mono_spill_global_vars): Use new macro.
10162
10163         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
10164
10165         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
10166         table.
10167
10168         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
10169         if MONO_ARCH_NEED_SIMD_BANK is defined.
10170
10171         * mini-ops.h: Added the new simd ops.
10172
10173         * mini-x86.c: Added mono_arch_xregname.
10174
10175         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
10176
10177         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
10178
10179         * mini-x86.h: Define simd related MONO_ARCH macros.
10180
10181         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
10182
10183         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
10184
10185         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
10186         MONO_CLASS_IS_SIMD to deal with simd related IR.
10187
10188         * mini.h (MonoInst): Added spill_var to the backend union.
10189
10190         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
10191
10192         * mini.h: Added forward declarations of the new simd fuctions.
10193
10194         * optflags-def.h: Added new optimization names SIMD.
10195
10196         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
10197
10198         * regalloc.h: Added support for working with 3 register banks.
10199
10200         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
10201
10202         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
10203
10204 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
10205
10206         * mini-exceptions.c: remove 64 bit related ifdef clutter.
10207
10208 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10209
10210         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
10211         instead of one on 64 bit systems.
10212
10213         * method-to-ir.c: Remove unused includes.
10214
10215 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
10216
10217         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
10218         cfg->used_int_regs, since the two are different on arm.
10219
10220 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10221
10222         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10223         mono_method_get_vtable_index() to get the vtable index.
10224
10225 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10226
10227         * method-to-ir.c (mono_method_to_ir2): Don't create native
10228         wrappers for array methods, because they're never called (and if
10229         they were called they wouldn't work).
10230
10231 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10232
10233         * method-to-ir.c (mono_method_to_ir2): Array methods are
10234         special-cased and must not be invoked indirectly via the (M)RGCTX
10235         when generic sharing is turned on.  Fixes #431413.
10236
10237 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10238
10239         * method-to-ir.c: When generic sharing is active, call
10240         non-interface virtual generic methods via the standard trampoline.
10241
10242         * mini-trampolines.c: Handle virtual generic shared methods.
10243
10244         * mini.h, mini-x86.c, mini-x86.h: New argument for
10245         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10246         method thunks and which is the trampoline to call if the lookup
10247         fails.  Enable the virtual generic method thunk for x86.
10248
10249         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10250         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10251         argument but assert that it's NULL, because these archs don't yet
10252         implement the virtual generic method thunk.  Changes in the IMT
10253         thunk data structures.
10254
10255 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10256
10257         * aot-compiler.c (emit_globals): Avoid invalid characters in
10258         the static linking symbol.
10259
10260         * objects.cs: Add a test for the range check optimization. Fix warnings.
10261
10262         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10263         optimization from the current JIT.
10264
10265         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10266         later in decompose_array_access_opts () to allow more optimizations.
10267
10268         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10269         mono_decompose_soft_float () for consistency.
10270
10271         * mini-ops.h: Fix arguments of OP_STRLEN.
10272
10273         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10274         into a separate function.
10275         (reset_cast_details): Ditto.
10276         (handle_unbox): Save cast details. Fixes #431254.
10277
10278         * method-to-ir.c: Remove some obsolete FIXMEs.
10279
10280 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10281
10282         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10283
10284 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10285
10286         * mini-codegen.c: More work on macros to make them
10287         ready for multiple regbanks.
10288
10289 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10290
10291         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10292
10293         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10294
10295 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10296
10297         * mini-codegen.c (mono_spillvar_offset): Proper support for
10298         multiple regbanks.
10299
10300 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10301
10302         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10303         the stack overflow changes.
10304
10305 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10306
10307         * mini-codegen.c: Make all bank macros depend on reg_bank.
10308
10309         * mini-codegen.c (mono_local_regalloc): Make free mask
10310         initialization regbank aware.
10311
10312 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10313
10314         * mini-codegen.c (mono_local_regalloc): Extract callee
10315         mask selection to a function and make it regbank aware.
10316
10317 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10318
10319         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10320         code to deal with many regbanks.
10321
10322 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10323
10324         * mini-codegen.c: More fp->regbank changes.
10325
10326 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10327
10328         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10329         of a hardcoded constant.
10330
10331 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10332
10333         * method-to-ir.c (type_from_stack_type): Fix typo.
10334
10335 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10336
10337         * mini-ia64.c (emit_move_return_value): Convert float return values to
10338         double.
10339
10340         * objects.cs: Add a new test.
10341         
10342         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10343         VARARG methods to fix an assert later.
10344
10345         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10346         end so it at least compiles.
10347
10348 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10349
10350         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10351
10352 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10353
10354         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10355         optimization to a new function (emit_optimized_ldloca_ir) and enable
10356         it for both ldloca and ldloca_s.
10357
10358 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10359
10360         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10361         gshared CASTCLASS code.
10362
10363         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10364         amd64, where the libc stack unwinder encounters stack frames referring to
10365         native code in unmapped memory.
10366
10367         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10368         sharing.
10369
10370         * generics.cs: Add new test.
10371
10372 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10373
10374         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10375         add a check that one of the ARM_FPU_ constants is defined.
10376
10377         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10378         
10379         * mini-exceptions.c: Fix build on non-altstack platforms.
10380
10381         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10382         sharing of vtypes.
10383
10384         * ir-emit.h: Add a comment to NEW_PCONST.
10385
10386         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10387
10388         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10389
10390         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10391         after the changes to MonoJitDomainInfo.
10392
10393 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10394
10395         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10396
10397 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10398
10399         * mini-ppc.c: Compiler warning fixes.
10400
10401 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10402
10403         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10404         for pinvokes.
10405
10406 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10407
10408         * exceptions-ppc.c, mini-ppc.h: Compile
10409         mono_arch_handle_altstack_exception() on Darwin, too.
10410
10411 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10412
10413         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10414         work on archs which don't have generic sharing implemented, only
10415         without the vtable_arg.
10416
10417 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10418
10419         * mini.c: Added comment explaining why delegate ctor icall
10420         wrappers are compiled.
10421
10422 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10423
10424         * mini.c: Don't produce trampolines to delegate ctor icall
10425         wrappers but compile them upfront.
10426
10427 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10428
10429         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10430         runtime-set function when going back to managed code. Currently this
10431         is used to set back the protection on the soft ovf pages and/or to
10432         throw the stack overflow exception that happened in unmanaged code.
10433
10434 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10435
10436         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10437         runtime-set function when going back to managed code. Currently this
10438         is used to set back the protection on the soft ovf pages and/or to
10439         throw the stack overflow exception that happened in unmanaged code.
10440
10441 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10442
10443         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10444         the support code for restoring stack protection after stack overflows
10445         that happen in unmanaged code. Don't set the exec permission on the
10446         soft overflow area.
10447
10448 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10449
10450         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10451         delegate->method_ptr is set. Fixes #428054.
10452
10453 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10454
10455         * tests.cs: Rename to ratests.cs.
10456
10457         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10458         emit_get_rgctx_... functions.
10459
10460 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10461
10462         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10463
10464 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10465
10466         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10467         before asserting that method is sharable.
10468
10469 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10470
10471         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10472         whether method needs a static RGCTX wrapper used instead of
10473         complex conditions.
10474
10475         * generic-sharing.c, mini.h: A few functions moved to
10476         metadata/generic-sharing.c.
10477
10478 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10479
10480         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10481         Generic code sharing for value types, which essentially means
10482         treating value type methods like static methods.  The RGCTX is
10483         passed in the same way.
10484
10485 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10486
10487         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10488         opcode when creating multi-dimensional arrays of open types.
10489
10490         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10491         open generic types.
10492
10493         * generics.cs: Add a test.
10494
10495         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10496
10497 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10498
10499         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10500
10501         * mini.c (mini_method_compile): Set it when running under the debugger. 
10502
10503         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10504         vreg optimization if the flag is set.
10505
10506         * driver.c (mono_main): Add --attach= option to pass options to
10507         the attach agent.
10508
10509         * mini.c (sigquit_signal_handler): Start the attach agent.
10510
10511         * ssapre.c: Disable this to save space since it is not yet ported to
10512         linear IR.
10513
10514         * regalloc2.c: Disable this to save space.
10515
10516         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10517
10518 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10519
10520         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10521         the -v option useful again.
10522
10523 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10524
10525         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10526         --break-at-bb.
10527
10528         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10529         arrays of arrays. Fixes #428406.
10530
10531         * method-to-ir.c (mini_emit_castclass): Ditto.
10532
10533         * objects.cs: Add new test.
10534         
10535 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10536
10537         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10538         was wrong at it choked against target_type_is_incompatible for byref types.
10539
10540 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10541
10542         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10543         places.
10544
10545 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10546
10547         * mini-exceptions.c: update a few more exceptions-related counters.
10548
10549 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10550
10551         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10552         new functions to allocate from persistent mempools.
10553
10554 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10555
10556         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10557         multiple register banks in the future.
10558
10559         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10560
10561 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10562
10563         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10564
10565         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10566
10567         * mini.h: Export type_to_eval_stack_type.
10568
10569         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10570         is only ins->klass of byref types.
10571
10572 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10573
10574         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10575         (mini_emit_memcpy2): Ditto.
10576
10577         * mini-amd64.c: Fix a warning.
10578
10579 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10580
10581         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10582         linking.
10583
10584 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10585
10586         * method-to-ir.c: Extract stloc micro-optimization to a
10587         function and apply it to all cases.
10588
10589 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10590
10591         * method-to-ir.c: Don't fail generic code sharing in cases we
10592         already support.
10593
10594 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10595
10596         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10597
10598 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10599
10600         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10601         implementation.
10602
10603 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10604
10605         * trace.c: make tracing more useful and correct, with per-thread
10606         id and indent info.
10607
10608 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10609
10610         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10611         doing a method call and the argument is an R4.
10612
10613 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10614
10615         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10616         generic methods.
10617
10618 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10619
10620         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10621
10622 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10623
10624         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10625         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10626
10627 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10628
10629         * driver.c: Add a --agent argument (not supported yet) to load managed
10630         agent assemblies before loading the main assembly, similarly to how the
10631         Java VM handles agents.
10632
10633 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10634
10635         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10636         function to do stack layout of local variables.
10637
10638 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10639
10640         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10641         calculation.
10642
10643 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10644
10645         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10646         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10647         JIT if DISABLE_JIT is defined.
10648
10649         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10650         defined.
10651
10652 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10653
10654         * iltests.il.in: Disable the fconv test on PPC (the result is
10655         undefined according to ECMA).
10656
10657 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10658
10659         * iltests.il.in: Enable tail call tests for PPC.
10660
10661         * mini.h: Add variable for storing incoming valuetype argument
10662         addresses for tail calls.
10663
10664         * mini-ppc.c: Implement valuetype arguments and return values for
10665         tailcalls on Linux.
10666
10667 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10668
10669         * mini-ppc.c: Partially implement tail calls (struct arguments and
10670         return values not supported).
10671
10672         * method-to-ir.c: Enable tail calls on PPC.
10673
10674 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10675
10676         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10677         runtime-invoke wrappers to work around the problem of them getting
10678         assigned to a random class.
10679
10680         * aot-runtime.c (mono_aot_get_method): Ditto.
10681         
10682 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10683
10684         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10685         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10686
10687 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10688
10689         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10690         until they're implemented properly.
10691
10692         * exceptions-ppc.c: Use arch-independent exception-handling code
10693         instead of custom one.
10694
10695         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10696         for Linear IR.
10697
10698         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10699
10700         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10701         applies when __powerpc__ is defined.
10702
10703 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10704
10705         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10706         methods to their code to avoid computing the full name of wrappers and
10707         doing a lookup in a string hash table.
10708
10709 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10710
10711         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10712         we identify bblocks before method_to_ir () is ran.
10713
10714         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10715         Also avoid optimizing branches pointing to themselves.
10716
10717         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10718
10719 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10720
10721         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10722
10723 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10724
10725         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10726         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10727         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10728         'buf'.
10729
10730         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10731         jumped to the same entry in plt_jump_table.
10732
10733 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10734
10735         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10736         dynamic images.
10737
10738 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10739
10740         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10741         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10742         #421807.
10743
10744 2008-08-29  Geoff Norton  <gnorton@novell.com>
10745
10746         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10747         segment, and doesn't properly handle .space as .text.  Fixes
10748         AOT Mach/ARM
10749
10750 2008-08-29  Geoff Norton  <gnorton@novell.com>
10751
10752         * mini.c: Disable the mach exception handler when running on 
10753         ARM
10754
10755 2008-08-29  Geoff Norton  <gnorton@novell.com>
10756
10757         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10758         globals on Darwin/ARM
10759
10760 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10761
10762         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10763         since too many things depend on it. Instead, call 
10764         mono_runtime_set_no_exec ().
10765         
10766         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10767         the new JIT.
10768
10769         * aot-compiler.c: Add an 'asm-only' AOT option.
10770
10771         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10772                 
10773         * aot-compiler.c (compile_method): Disable gshared support for now as it
10774         doesn't yet work.
10775
10776 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10777
10778         * mini-amd64.h : Fix a compiler warning.
10779
10780         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10781           Changed to use a callback function to retrieve the unwind info.
10782           This avoids problems observed when code blocks were removed by
10783           unloading an app domain.
10784
10785         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10786           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10787           to work properly.
10788
10789         Contributed under MIT/X11 license.
10790
10791 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10792
10793         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10794           case to keep the stack aligned to 8.
10795
10796         Contributed under MIT/X11 license.
10797
10798 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10799
10800         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10801         avoid repeated linear searches.
10802
10803 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10804
10805         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10806         methods it can't handle.
10807         
10808         * aot-compiler.c (add_method): Avoid adding a method twice.
10809         (add_wrappers): Add runtime invoke wrappers for all methods.
10810
10811         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10812         function to create an aot-compatible version of this trampoline.
10813
10814         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10815
10816 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10817
10818         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10819
10820         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10821         with a generic sharing failure.
10822
10823         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10824
10825         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10826         CEE_RETHROW. Fixes #419634.
10827
10828         * mini.c (mono_method_to_ir): Ditto.
10829
10830         * exceptions.cs: Add a new test.
10831         
10832         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10833         to mono_type_stack_size_internal () since some callers might not pass in
10834         an rgctx.
10835
10836         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10837         instrument_prolog. Fixes #419878.
10838
10839         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10840         doubles in soft float mode volatile.
10841
10842 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10843
10844         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10845
10846         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10847         to handle soft float correctly.
10848
10849         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10850         the fast path.
10851
10852         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10853
10854         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10855         to sp, since the generics catch code requires it.
10856
10857         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10858         copying.
10859
10860         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10861         mono_arch_emit_imt_argument ().
10862
10863         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10864
10865         * mini-arm.c tramp-arm.c: Generic sharing updates.
10866
10867 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10868
10869         * mini-arm.c: Fix the arm build.
10870
10871         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10872         handling enums, generic instances and generic sharing.
10873         (mini_type_stack_size_full): Ditto.
10874
10875         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10876         
10877         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10878
10879         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10880
10881         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10882         trampolines.
10883
10884         * mini-arm.c: Various small generic sharing changes.
10885
10886         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10887         this for x86.
10888         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10889         custom code.
10890
10891         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10892         helper function to return a generic class init trampoline.
10893
10894         * method-to-ir.c mini.c: Use it.
10895         
10896         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10897         arch-specfic function to return a generic class init trampoline.
10898
10899         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10900         the GENERIC_CLASS_INIT custom code.
10901
10902         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10903         a fatal error, not a sharing failure.
10904
10905         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10906         needed.
10907
10908         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10909         trampoline argument from MONO_ARCH_VTABLE_REG.
10910
10911         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10912         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10913         argument, and pass the vtable in VTABLE_REG.
10914
10915         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10916         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10917         argument, and pass the vtable in VTABLE_REG.
10918         (mono_arch_create_trampoline_code_full): Remove some special casing for
10919         the rgctx fetch trampoline.
10920
10921         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10922         Fixes #419273.
10923
10924         * iltests.il: Add a test for it.
10925
10926 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10927
10928         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10929
10930         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10931         no longer needed.
10932
10933         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10934         use mono_jit_info_table_find () to avoid recursion.
10935         (mono_delegate_trampoline): Add a sync wrapper here.
10936
10937         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10938         here.
10939
10940         * mini.c (mono_method_to_ir): Ditto.
10941         
10942         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10943         add_sync_wrapper argument. Don't add a sync wrapper here.
10944         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10945
10946         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10947         
10948 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10949
10950         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10951           of nonvolatile registers back from MonoContext to CONTEXT.
10952
10953         Contributed under MIT/X11 license.
10954
10955 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10956
10957         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10958           arguments on Winx64 there are only 4 argument registers.  For this
10959           logic to work the last argument must be pulled from the stack.  
10960
10961         Contributed under MIT/X11 license.
10962
10963 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10964
10965         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10966
10967         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10968         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10969         encode/decode_method_ref ().
10970
10971         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10972
10973         * aot-runtime.c (decode_patch): Ditto.  
10974
10975         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10976         MONO_PATCH_INFO_METHOD.
10977
10978         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10979         MonoGenericJitInfo.
10980
10981         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10982         MonoGenericJitInfo.
10983
10984         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10985
10986         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10987         one from the caller.
10988
10989         * aot-runtime.c (decode_generic_inst): New function to decode and
10990         return a interned generic inst.
10991         (decode_klass_ref): Use it.
10992         (decode_method_ref): Ditto.
10993
10994         * aot-compiler.c (emit_exception_debug_info): Save 
10995         jinfo->has_generic_jit_info too.
10996
10997 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10998
10999         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
11000
11001         * iltests.il.in: Add a test for fconv_to_i.
11002
11003         * liveness.c: Disable the liveness2 pass for now to save space.
11004
11005         * regalloc2.c: Include mempool-internals.h to fix warnings.
11006
11007         * aot-compiler.c (encode_method_ref): Encode the context of generic
11008         instance methods.
11009
11010         * aot-runtime.c (decode_method_ref): Inflate generic methods using
11011         the context saved in the aot file.
11012
11013         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
11014
11015         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
11016
11017         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
11018         volatile so they won't be optimized away.
11019
11020 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
11021
11022         * ssa.c:
11023         * ssa2.c:
11024         * mini.c:
11025         * regalloc2.c:
11026         * dominators.c: Remove duplicated functions that now are in
11027         mempool-internals.h.
11028
11029 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
11030
11031         * aot-compiler.c: Fix warnings.
11032
11033         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
11034
11035         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
11036
11037         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
11038         as the patch type.
11039
11040         * mini.c (mono_resolve_patch_target): Ditto.
11041         
11042         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
11043         (encode_klass_ref): Add support for encoding VARs/MVARs.
11044
11045         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
11046
11047         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
11048         the handling of the got entries into a separate 'decode_got_entry' function.
11049         Add support for RGCTX_FETCH.
11050
11051         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
11052         clobbered by the trampoline code.
11053
11054         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
11055         not clobbered by the indirect calling code.
11056
11057 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
11058
11059         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
11060         to fix the build.
11061
11062 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
11063
11064         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
11065         signature using the compilation mempool otherwise we would leak it.
11066
11067 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
11068
11069         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
11070         mono_emit_abs_call ().
11071
11072         * patch-info.h: Add GENERIC_CLASS_INIT.
11073
11074         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
11075
11076         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
11077         as their target as a near call.
11078
11079         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
11080         ABS handling code.
11081         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
11082
11083         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
11084         call to a runtime function described by a patch.
11085
11086         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
11087         mono_emit_abs_call, this has the advantage that the ABS handling code in
11088         mono_codegen () can handle them both, and can handle other stuff in the
11089         future without additional code.
11090
11091         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
11092         entry.
11093         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
11094         abs addresses.
11095
11096         * mini.h: Add missing bblock related prototypes.
11097
11098         * mini.h (MonoCompile): Remove unused reverse_inst_list and
11099         reverse_inst_list_len fields.
11100
11101         * mini.c: Refactor this file a bit by moving branch optimizations to 
11102         branch-opts.c.
11103
11104         * method-to-ir.c: Merge generic sharing changes missed earlier.
11105
11106         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
11107
11108         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
11109         shared patches. Process METHODCONST as a shared patch.
11110
11111         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
11112         as it crashes on the 2.0 mscorlib.
11113
11114         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
11115         to cause crashes.
11116         
11117         * aot-compiler.c: Use is_plt_patch () in a few additional places.
11118         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
11119         by IMT.
11120
11121         * aot-compiler.c: Reorganize the got handling code to be a bit more
11122         understandable.
11123
11124 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11125
11126         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
11127         mono_patch_info_equals/hash, and use it to massively simplify
11128         get_plt_index ().
11129
11130         * mini.c (mono_patch_info_hash): Simplify this and add support for
11131         more patch types.
11132
11133         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
11134
11135         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
11136         handling code, since an offset is not enough to identify a trampoline.
11137
11138         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
11139
11140 2008-08-17  Mark Probst  <mark.probst@gmail.com>
11141
11142         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
11143
11144         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
11145
11146         * mini-ops.h: Argument and result types for OVF_CARRY ops.
11147
11148         * decompose.c: PPC decompositions for various ops.
11149
11150         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
11151
11152 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11153
11154         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
11155         call the generic trampoline code using a call, instead of a jump, to
11156         remove some special casing from the generic trampoline code.
11157
11158         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
11159         (mono_codegen): Ditto.
11160
11161         * aot-compiler.c aot-runtime.c: Ditto.
11162
11163         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
11164
11165         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
11166         helper function to find the offset corresponding to a lazy fetch trampoline.
11167
11168         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
11169         when doing generic sharing.
11170
11171         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
11172         places.
11173         
11174         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
11175         mini-trampolines.c to be with the other trampoline creation functions.
11176
11177         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
11178         as it is equal to method->signature in most cases, add a 
11179         mono_emit_method_call_full variant which takes a signature and an imt
11180         argument as well.
11181
11182 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
11183
11184         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
11185         to this function, since it could be computed easily from the method 
11186         argument.
11187         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
11188         more.
11189
11190         * method-to-ir.c mini.c: Remove references to 
11191         compile_generic_method_wo_context.
11192
11193         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
11194         generic method calls.
11195         
11196         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
11197         dimensional non-szarrays.
11198
11199         * mini.c (mini_init): Register mono_array_new_1.
11200
11201         * jit-icalls.c (mono_array_new_1): New jit icall.
11202
11203         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
11204         pointing to the method.
11205
11206         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
11207         method addresses belonging to METHOD_JUMP patches in the 
11208         jump_target_got_slot_hash.
11209         (mono_aot_load_method): Ditto.
11210
11211         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
11212         METHOD_JUMP patches.
11213
11214         * mini.c (mini_create_jit_domain_info): New helper function which 
11215         initializes/frees domain->runtime_info.
11216         (mini_free_jit_domain_info): Ditto.
11217         (mini_init): Install the domain hook functions with the runtime.
11218
11219         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11220         information maintained by the JIT.
11221
11222         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11223         insertion into jump_table_hash into mono_codegen (), also implement proper
11224         locking.
11225
11226         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11227         tail calls, it is already done by the aot code.
11228         
11229         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11230         mechanism on amd64.
11231
11232         * iltests.il.in: Make the jmp test a bit more complex.
11233
11234         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11235         generic instances which doesn't have a token.
11236
11237         * aot-runtime.c (decode_method_ref): Ditto.
11238         
11239         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11240         can handle this case now.
11241         (handle_box): Ditto.
11242
11243 2008-08-15  Geoff Norton  <gnorton@novell.com>
11244
11245         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11246         debugging check.
11247
11248 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11249
11250         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11251         calling generic methods.
11252
11253         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11254
11255         * aot-runtime.c (decode_patch_info): Ditto.
11256
11257         * mini.c (mono_resolve_patch_target): Ditto.
11258         
11259         * patch-info.h: Add METHOD_RGCTX.
11260
11261         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11262
11263 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11264
11265         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11266         arguments in registers.
11267
11268         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11269         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11270
11271         * mini.c (mini_method_compile): Abort aot compilation for generic
11272         methods if generic sharing is disabled.
11273         
11274         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11275         an mrgctx.
11276
11277         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11278         requiring an mrgctx.
11279
11280         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11281         store instructions when converting a vcall to a normal call.
11282
11283         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11284         mono_arch_find_jit_info.
11285
11286 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11287
11288         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11289         avoid calling mono_method_full_name () for every method even if the
11290         env var is not set.
11291         (check_inline_caller_method_name_limit): Ditto.
11292
11293 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11294
11295         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11296         assemblies in one run.
11297
11298         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11299         skipped methods if it is not 0.
11300
11301         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11302
11303 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11304
11305         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11306           MONO_ARCH_HAVE_UNWIND_TABLE.
11307
11308         Contributed under MIT/X11 license.
11309
11310 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11311
11312         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11313           from default optimizaton list on Winx64.
11314
11315         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11316
11317         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11318           the LMF from the MonoJitTlsData structure.
11319
11320         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11321
11322         Contributed under MIT/X11 license.
11323
11324 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11325
11326         * mini.c (sigsegv_signal_handler): Fix the build.
11327
11328         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11329         assembly->aot_module.
11330
11331         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11332         hash table. This simplifies and speeds up a lot of code, and fixes support
11333         for .netmodules.
11334
11335         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11336         with the runtime.
11337
11338         * mini-exceptions.c: Ditto.
11339         
11340         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11341         'native_offset' argument, since these are computed in the 
11342         mono_find_jit_info () function.
11343
11344         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11345         is used by exceptions-ppc.c.
11346
11347         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11348         mono_arch_find_jit_info ().
11349         
11350         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11351         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11352         generic code in mini-exceptions.c.
11353
11354 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11355
11356         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11357
11358         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11359         
11360         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11361         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11362         called while holding the loader lock. Fixes #415608.
11363         (mono_aot_get_method_from_token_inner): Ditto.
11364
11365 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11366
11367         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11368         to reduce differences between this and the generic implementation in
11369         mini-exceptions.c.
11370         (ves_icall_get_frame_info): Ditto.
11371
11372         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11373
11374         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11375         longer neccesarry.
11376
11377         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11378         mono_arch_get_call_filter () and make it non-static, for consistency with the
11379         other architectures.
11380
11381 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11382
11383         * mini.c:
11384         * local-propagation.c:
11385         * mini-x86.c: Correct the name of arch defines.
11386
11387 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11388
11389         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11390         NO_EMULATE_LONG_SHIFT_OPS define.
11391
11392 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11393
11394         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11395         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11396
11397         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11398         MACH fixes. Merged from the 2.0 branch.
11399
11400         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11401
11402         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11403         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11404
11405         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11406
11407         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11408         mono_marshal_get_native_wrapper () signature changes.
11409
11410 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11411
11412         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11413         conversion bug under arm.
11414
11415 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11416
11417         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11418
11419         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11420         with overflow checking.
11421
11422 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11423
11424         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11425         to the genmdesc.pl file
11426
11427 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11428
11429         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11430         arg_array in the soft-float versions of the LOAD/STORE macros.
11431
11432         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11433         implementation.
11434
11435         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11436
11437 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11438
11439         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11440         a float HFA. Fixes #413621.
11441
11442 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11443
11444         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11445         frame_size to args_size. Fixes build.
11446
11447 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11448
11449         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11450         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11451
11452         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11453         the stack are not unaligned. Fixes #413247.
11454         
11455 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11456
11457         * mini.c: update jitted methods performance counters.
11458
11459 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11460
11461         * mini-exceptions.c: increase the exceptions thrown performance
11462         counter in mono_handle_exception ().
11463
11464 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11465
11466         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11467         can work with netmodules.
11468
11469 2008-07-28  Geoff Norton  <gnorton@novell.com>
11470
11471         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11472         regression tests.
11473
11474 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11475
11476         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11477         correct place.
11478
11479 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11480
11481         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11482           The float param registers and other param registers must be the 
11483           same index on Windows x64.
11484
11485         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11486           ArgValuetypeAddrInIReg argument case.  Setting the argument
11487           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11488
11489         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11490           variable computed above as the copy length for arguments of storage
11491           type ArgValuetypeAddrInIReg.
11492
11493         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11494           ArgValuetypeAddrInIReg argument case.  This case will rely on
11495           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11496
11497         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11498           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11499           jump and tail call instructoins as they do not follow the typical call behavior.
11500
11501         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11502           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11503           local variable and pass the local variable by reference to the called method.
11504
11505         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11506           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11507           of a struct is passed in a register it must be saved with the other
11508           volatile argument on the stack.
11509
11510         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11511           frame pointer the stack adjustment value must be saved to the unwind 
11512           info structure.
11513
11514         Contributed under MIT/X11 license.
11515
11516 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11517
11518         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11519         which got lost in the merge.
11520
11521 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11522
11523         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11524         build.
11525
11526         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11527         
11528         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11529         icalls, since they won't be patched.
11530
11531         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11532         different code sequence when running under valgrind to prevent some valgrind
11533         errors.
11534
11535         * iltests.il.in: Add new regression test.
11536
11537         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11538         end with a throw.
11539
11540         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11541         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11542
11543         * iltests.il.in: Add new test.
11544
11545         * aot-compiler.c: Fix some warnings.
11546
11547         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11548         Fixes #412494.
11549
11550 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11551
11552         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11553         (mini_usage_jitdeveloper): Add a missing --wapi option.
11554
11555 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11556
11557         * mini-codegen.c: Simplify the is_fp macros.
11558         (free_up_ireg): Remove, use free_up_reg instead.
11559         (free_up_reg): Fix the fp case.
11560
11561 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11562
11563         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11564         lowered earlier.
11565
11566         * exceptions-x86.c: Merge some changes which seemed to have got lost
11567         in the linear-ir merge.
11568
11569         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11570
11571         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11572         long vreg volatile even if the variable was already created.
11573
11574         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11575         volatile variables.
11576
11577 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11578
11579         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11580
11581         * mini.c (mono_jit_compile_method_inner): Add support for 
11582         MONO_EXCEPTION_BAD_IMAGE.
11583
11584         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11585         mini_method_get_context () returns NULL. Fixes #356531.
11586
11587         * mini.c (mono_method_to_ir): Ditto.
11588         
11589         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11590         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11591
11592 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11593
11594         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11595         in the LDFTN implementation.
11596
11597 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11598
11599         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11600         code, patch calls to icalls, too, even if they're not in the
11601         shared generic code hash.  Fixes #411962.
11602
11603 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11604
11605         * cpu-x86.md: Increase the length of the fcall opcodes.
11606
11607         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11608         calls returning floats.
11609
11610         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11611         on NEWARR.
11612         
11613         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11614         missed earlier.
11615
11616         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11617         into the domain->method_code_hash.
11618
11619         * aot-compiler.c: Fix win32 build.
11620
11621         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11622         
11623         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11624         gshared NEWARR implementation.
11625
11626         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11627
11628         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11629         can be used outside of method_to_ir.
11630
11631         * mini.h (MonoCompile): Add arg_types field.
11632
11633         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11634         
11635         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11636         the values of the local arg_array and param_types array.
11637
11638 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11639
11640         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11641         got accesses might only get generated later when NEWOBJ is decomposed.
11642         
11643         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11644         looking up the native code of the target method when a delegate is called
11645         for the first time.
11646
11647         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11648         optimization.
11649
11650         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11651
11652         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11653         AOT work on platforms without a working dlsym implementation.
11654
11655         * mini.h: Bump AOT image format version.
11656         
11657 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11658
11659         * mini-exceptions.c: Free a MonoType with
11660         mono_metadata_free_type() instead of g_free().
11661
11662         * aot-runtime.c: Free a MonoType.
11663
11664 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11665
11666         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11667         optimization.
11668
11669         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11670         fp stack on x86.
11671
11672 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11673         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11674         profiler hook.
11675
11676 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11677
11678         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11679         NEWOBJ calls on valuetypes.
11680
11681         * iltests.il.in: Add new test.
11682
11683         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11684
11685 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11686
11687         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11688         is no longer needed.
11689
11690         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11691         non register sized integer arguments.
11692         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11693         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11694         emit_memcpy2 ().
11695
11696         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11697         CEE_MONO_RETOBJ.
11698         
11699         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11700         two a binop with different sized arguments is emitted.
11701
11702         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11703         instruction in the ins==NULL case.
11704
11705 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11706
11707         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11708
11709         * mini-x86.c: Fix osx build.
11710
11711         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11712         opcodes as well.
11713
11714         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11715         instruction for non int sized variables.
11716
11717         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11718         implementation.
11719
11720 2008-07-23  Robert Jordan  <robertj@gmx.net>
11721
11722         * method-to-ir.c: Fix MSVC build.
11723
11724 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11725
11726         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11727         a non int sized type, widen it to an int since newer versions of gcc seem to
11728         generate code which needs this.
11729
11730         * ssa2.c abcremoval2.c: Fix warnings.
11731
11732         * *: Merge the Linear IR branch.
11733
11734         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11735         the ChangeLog file there describes all the changes done over the years. 
11736         Further documentation can be found at www.mono-project.com/Linear_IL.
11737
11738 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11739
11740         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11741           The float param registers and other param registers must be the 
11742           same index on Windows x64.
11743
11744         Contributed under MIT/X11 license.
11745
11746 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11747
11748         * mini.c: Make the previous fix GC safe.
11749
11750 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11751
11752         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11753
11754 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11755
11756         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11757           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11758           ArgValuetypeAddrInIReg instead.
11759
11760         Contributed under MIT/X11 license.
11761
11762 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11763
11764         * mini-codegen.c (get_register_spilling): Fix a warning.
11765
11766 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11767
11768         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11769         for types which the initialization fails. Raises the provided exception
11770         at the right stop after cleanup.
11771
11772 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11773
11774         * aot-compiler.c: Free most of the memory allocated during compilation.
11775
11776         * mini.c (mini_parse_debug_options): Fix a leak.
11777         
11778         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11779         during aot compilation.
11780
11781 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11782
11783         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11784         it has too much register pressure.
11785
11786 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11787
11788         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11789
11790 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11791
11792         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11793         on x86.
11794
11795         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11796         on amd64 similar to the way it is done on arm.
11797
11798         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11799
11800         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11801         consistency, normalize error messages, avoid loading aot-only modules in
11802         normal mode.
11803
11804         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11805         for consistency.
11806
11807         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11808
11809 2008-07-11  Martin Baulig  <martin@ximian.com>
11810
11811         * debug-debugger.h
11812         (MonoDebuggerInfo): Add `interruption_request'.
11813
11814 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11815
11816         * aot-compiler.c (emit_plt): Remove some dead code.
11817
11818         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11819
11820         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11821         return the plt info offset belonging to a given plt entry.
11822
11823         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11824         mono_aot_get_plt_info_offset.
11825         
11826         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11827         similar to the amd64 code by makeing jumps through a separate jump table 
11828         instead of embedding the jump addresses into the code.
11829
11830 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11831
11832         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11833         method.
11834
11835 2008-07-10  Martin Baulig  <martin@ximian.com>
11836
11837         * mini.c (mini_method_compile): Disable generics sharing when
11838         running in the debugger.
11839
11840 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11841
11842         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11843
11844         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11845         the local register allocator from running out of registers on x86 when 
11846         using aot.
11847
11848 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11849
11850         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11851         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11852         C4146.
11853
11854         Contributed under MIT/X11 license.
11855
11856 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11857
11858         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11859         speed up the assembler.
11860
11861 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11862
11863         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11864         support.
11865
11866         * mini.c: Move the soft float handling macros a bit earlier, add 
11867         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11868         place.
11869
11870         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11871
11872         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11873         read-only to help catch code allocation requests.
11874         
11875         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11876         and turn it off when using --aot-only or when compiling with --aot=full.
11877
11878         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11879         jump table for switches from the normal domain mempool, not the code
11880         manager.
11881
11882         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11883         unbox trampoline which handles aot-only mode too.
11884
11885         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11886         an AOTed unbox trampoline.
11887
11888         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11889
11890 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11891
11892         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11893         ""
11894
11895         Contributed under MIT/X11 license.
11896
11897 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11898
11899         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11900           the unwind information for the method at the end of the allocated block.
11901           
11902         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11903           MonoCompileArch to hold the unwind info for SEH on Winx64
11904         
11905         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11906           frame pointer info for the method being compiled.
11907           
11908         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11909           the call to mono_exception_from_token.
11910           
11911         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11912           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11913           information is stored a the end of the method block because it is all 32-bit offset based.
11914
11915         Contributed under MIT/X11 license.
11916
11917 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11918
11919         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11920
11921         * wapihandles.c: Fix warnings.
11922
11923         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11924         mode.
11925
11926         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11927         mono_jit_compile_method in aot-only mode since that calls the type 
11928         initializer.
11929         
11930         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11931         get_delegate_invoke_impl in aot-only mode.
11932
11933         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11934
11935 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11936
11937         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11938
11939         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11940         is on by default.
11941
11942         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11943
11944         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11945         init trampoline from the AOT file as well.
11946
11947         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11948         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11949         code.
11950
11951         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11952         mono_init.
11953
11954         * exceptions-amd64.c: Add _full variants for the remaining exception code
11955         creation functions as well, allow emission of relocatable code, remove
11956         caching since that is now done by the caller.
11957
11958         * mini-exceptions.c: Add _full variants for the remaining exception code
11959         creation functions as well, add aot-only support.
11960
11961         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11962         if we can determine a proper token for them.
11963         (add_wrappers): Add a few more wrappers.
11964         (emit_method_code): Remove some dead code.
11965         (emit_trampolines): Emit exception code too.
11966
11967         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11968
11969         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11970         mono_array_new_va which avoids varargs.
11971
11972         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11973
11974         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11975         mono_arch_create_specific_trampoline () in all places.
11976
11977         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11978         a bit so it can be used for other things as well.
11979         
11980         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11981         on demand as well.
11982
11983         * exceptions-amd64.c: Rename the caching from the exception code creation
11984         functions, it is done by the caller instead.
11985         
11986         * exceptions-amd64.c: Change the signature of the exception code creation 
11987         functions to allow the creation of relocatable code later.
11988
11989         * mini-exceptions.c: Add a set of functions to query the various 
11990         runtime-generated exception functions.
11991
11992         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11993         mono_arch_.. () functions.
11994         
11995 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11996
11997         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11998
11999         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
12000
12001         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
12002         (mini_get_vtable_trampoline): Ditto.
12003
12004         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
12005         code in the AOT case by returning the code size and a list of relocations to
12006         the caller.
12007
12008         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
12009
12010 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
12011
12012         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
12013           clean the stack.
12014
12015         Contributed under MIT/X11 license.
12016
12017 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
12018
12019         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
12020         so the buffer size can be computed correctly. Fixes #404735.
12021
12022         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
12023         normally as cfg->debug_info is already freed.
12024
12025 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
12026
12027         * mini-amd64.c: For calls returning vtypes in registers, don't store
12028         the return address on the stack, instead allocate a separate local for
12029         it. Fixes #404729.
12030
12031 2008-07-05  Mark Probst  <mark.probst@gmail.com>
12032
12033         * mini-trampolines.c, mini.h: Add an argument to
12034         mono_create_jit_trampoline_in_domain() for turning off the adding
12035         of the sync wrapper.
12036
12037         * mini.c: Use the JIT trampoline without sync instead of
12038         ldftn_nosync in static RGCTX invoke wrappers so that the call can
12039         be patched.
12040
12041 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12042
12043         * driver.c: Turn on GSHARED optimization by default.
12044
12045 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
12046
12047         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
12048         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
12049
12050         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
12051         create a variant of the generic trampoline code callable from AOTed trampolines.
12052
12053         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
12054         trampoline code callable from AOTed trampolines.
12055
12056         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
12057
12058 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12059
12060         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
12061         pass-through manner.
12062
12063         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
12064         and don't fail sharing for them anymore.
12065
12066         * mini-exceptions.c: Handle exceptions in shared generic methods.
12067
12068         * generic-sharing.c: When checking the context of a generic
12069         method, also check its class's context.  Don't treat wrappers as
12070         sharable.
12071
12072         * mini-trampolines.c: Some code factored out to
12073         metadata/generic-sharing.c.  Handle the MRGCTX case.
12074
12075         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
12076         we must deal with the method being of another instantiation of the
12077         class.  Add static rgctx invoke wrappers to generic methods.
12078
12079 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12080
12081         * mini.c: Provide all jit infos of generic shared methods with a
12082         generic jit info.
12083
12084         * mini-exceptions.c: Handle the new situation that a generic info
12085         might be available, but not info about the this/vtable/mrgctx
12086         variable.
12087
12088 2008-07-03  Mark Probst  <mark.probst@gmail.com>
12089
12090         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
12091         generic methods.
12092
12093 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
12094
12095         * dominators.c (check_dominance_frontier): Fix a warning.
12096
12097         * mini.h: Add some missing prototypes.
12098
12099         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
12100
12101         * driver.c (mono_jit_init_version): Correct the comments since the first
12102         argument should be the name of the root domain, not a filename.
12103
12104         * aot-runtime.c (make_writable): Error out if this is called while running
12105         with --aot-only.
12106         (load_aot_module): Ditto.
12107
12108         * aot-compiler.c: Really fix the computation of method indexes.
12109
12110         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
12111         optimizations as this is no longer called frequently.
12112
12113         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
12114         method and the invoke impl code and pass it to the delegate trampoline instead of
12115         just the delegate class.
12116
12117 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
12118
12119         * aot-compiler.c: Fixup the computation of method indexes.
12120         (add_wrappers): Create the base methods of the runtime invoke wrappers using
12121         the method builder infrastructure.
12122
12123         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
12124         has no header.
12125
12126         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
12127         mode, load the method right away instead of creating a trampoline.
12128
12129         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
12130
12131         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
12132         some checks a bit.
12133
12134 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
12135
12136         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
12137         (mono_aot_load_method): Use method_index instead of method->token.
12138
12139         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
12140         can handle icalls etc. properly.
12141
12142         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12143
12144         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
12145
12146         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
12147         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
12148         JIT_ICALL_ADDR patch type.
12149
12150         * patch-info.h: Add JIT_ICALL_ADDR patch type.
12151
12152         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
12153         request flag.
12154         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
12155
12156         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
12157
12158 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
12159
12160         * mini.c: Use domain->jit_code_hash_lock for controlling access to
12161         domain->jit_code_hash.
12162
12163 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
12164
12165         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
12166
12167 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
12168
12169         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
12170         get_this_arg_from_call, let it compute it when needed.
12171
12172         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
12173         gsctx from code only when needed.
12174
12175         * mini-trampolines.c (get_generic_context): Rename this to 
12176         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
12177         it can be called by the arch backends.
12178
12179         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
12180
12181 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
12182
12183         * driver.c (mono_main): Add experimental --aot-only command line option.
12184
12185         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
12186         set.
12187
12188 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
12189
12190         * driver.c (DllMain): Remove mono_module_handle.
12191
12192         Contributed under MIT/X11 license.
12193
12194 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
12195
12196         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
12197         for emitting methods which are not in the source assembly. Detect and report
12198         failure of assembling+linking.
12199         
12200         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
12201
12202         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
12203
12204 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
12205
12206         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
12207
12208 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
12209
12210         * mini.h: Remove some obsolete prototypes.
12211
12212         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
12213
12214 2008-06-24  Mark Probst  <mark.probst@gmail.com>
12215
12216         * mini.c (get_object_generic_inst): Variable-sized arrays are not
12217         supported by Visual Studio, so use alloca().
12218
12219 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12220
12221         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12222         Fixes #402585.
12223
12224 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12225
12226         * mini.c: Fail sharing of a generic method if it contains an open
12227         catch clause (because we don't pass MRGCTXs yet).
12228
12229 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12230
12231         * mini.c: When compiling a method with generic sharing, insert the
12232         method instantiated with an all-Object generic context into the
12233         jit info table, instead of the context of the first instantiation
12234         of the method we happen to compile.
12235
12236 2008-06-18  Martin Baulig  <martin@ximian.com>
12237
12238         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12239         `major_version' and `minor_version'.
12240
12241 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12242
12243         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12244         mono_method_is_generic_sharable_impl() takes an additional
12245         argument specifying whether to treat type variables as reference
12246         types.
12247
12248 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12249
12250         * mini.h: Removed obsolete prototypes.
12251
12252 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12253
12254         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12255         already handle them.
12256
12257 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12258
12259         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12260         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12261         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12262         tramp-x86.c: Added a MonoGenericContext* argument to
12263         mono_arch_get_unbox_trampoline() so that it can call other
12264         functions which require it.
12265
12266 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12267
12268         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12269         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12270         mono_arch_get_this_arg_from_call() takes a
12271         MonoGenericSharingContext* as well.
12272
12273 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12274
12275         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12276         implement generic sharing of unbox.
12277
12278 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12279
12280         * mini.c: Don't compute the vtable to determine whether a field is
12281         special static, because it might not work for open types.
12282
12283 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12284
12285         * mini.c: Removed the unused token_type and token_source arguments
12286         from get_runtime_generic_context_ptr().
12287
12288 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12289
12290         * mini.c (ADD_BINOP): fix the build
12291
12292 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12293
12294         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12295         a widening op.
12296
12297 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12298
12299         * mini.h: Removed class relations enum that's not used anymore.
12300
12301 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12302
12303         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12304
12305         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12306         the lazy fetch trampoline access code.
12307
12308 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12309
12310         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12311
12312 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12313
12314         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12315
12316         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12317
12318         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12319
12320 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12321
12322         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12323         intrinsics.
12324
12325         * mini-ops.h: Add MIN/MAX_UN opcodes.
12326
12327         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12328         intrinsics.
12329
12330         * basic-math.cs: Add more min/max tests.
12331
12332         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12333
12334 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12335
12336         * mini.c: Small fix in the prologue of emit_castclass.
12337
12338 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12339
12340         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12341
12342         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12343         do not work even for unsigned types. Fixes #400014.
12344
12345         * basic-math.cs: Add regression tests for unsigned Min/Max.
12346
12347 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12348
12349         * mini.c: Added additional context_used argument to several
12350         functions, which will be needed for sharing generic methods.  Use
12351         GET_RGCTX macro wherever appropriate.  Declare only one
12352         context_used in mono_method_to_ir().
12353
12354 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12355
12356         * mini.c, generic-sharing.c: Removed generic class relations.
12357
12358         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12359         functions due to MRGCTX changes.
12360
12361 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12362
12363         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12364         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12365         with calculated IMT.
12366
12367         * mini.c: Generic sharing of calls via generic interfaces.
12368
12369         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12370         generic method with non-constant MonoGenericContext*.  Instead,
12371         the context is taken out of the method itself.
12372
12373 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12374
12375         * mini.c: Generic sharing of ldvirtftn.
12376
12377 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12378
12379         * mini.c: Generic sharing of ldftn.
12380
12381 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12382
12383         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12384
12385 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12386
12387         * mini.c: Generic sharing of the special case of ldtoken followed
12388         by a call to GetTypeFromHandle.
12389
12390 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12391
12392         * mini.c: Generic sharing of box for nullable types.
12393
12394 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12395
12396         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12397         are passed on the stack. Fixes #324807.
12398
12399 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12400
12401         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12402         for the ArgValuetypeAddrInIReg case.
12403
12404         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12405         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12406
12407         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12408         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12409         local variable and pass the local variable by reference to the called method.
12410           
12411         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12412         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12413
12414         Contributed under MIT/X11 license.
12415
12416 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12417
12418         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12419
12420         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12421         everything.
12422
12423 2008-06-10  Martin Baulig  <martin@ximian.com>
12424
12425         * debug-mini.c
12426         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12427
12428 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12429
12430         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12431         possible error when no arguments are passed.
12432
12433         Contributed under MIT/X11 license.
12434
12435 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12436
12437         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12438         where the file name is NULL.
12439
12440 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12441
12442         * mini.c: Fix s390 build.
12443
12444 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12445
12446         * trace.c (mono_trace_parse_options): Fix warnings.
12447
12448         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12449
12450 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12451
12452         * mini.c (remove_block_if_useless): Avoid printing the method name.
12453         
12454         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12455         MONO_INST_NEW.
12456
12457         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12458         LMF. Not yet used.
12459
12460         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12461         translated code after it has been patched.
12462
12463 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12464
12465         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12466         avoid problems during code patching on SMP systems.
12467         (emit_call): Avoid adding a patch info which is already added by 
12468         emit_call_body.
12469         (mono_arch_emit_exceptions): Ditto.
12470
12471 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12472
12473         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12474         MONO_TYPE_ISSTRUCT already checks for it.
12475
12476 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12477
12478         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12479           structs with floats on Winx64 the float registers are not used.  
12480           The integer registers are always used..
12481         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12482           only one register will be used and only if the size of the struct 
12483           is 1,2,4, or 8 bytes.
12484
12485         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12486           to work for Winx64.
12487
12488         Contributed under MIT/X11 license.
12489
12490 2008-06-05  Martin Baulig  <martin@ximian.com>
12491
12492         * debug-debugger.c (debugger_lookup_class): Also call
12493         mono_class_setup_methods() here; we're only called from RTI.
12494
12495 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12496
12497         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12498         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12499         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12500         Post-process object files and add dtrace-generated object, if necessary.
12501
12502         Contributed under MIT/X11 license.
12503
12504 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12505
12506         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12507         element class.
12508
12509         * mini.c: Generic sharing for unbox.any and castclass.
12510
12511 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12512
12513         * mini.c: Ignore tailcall prefix in shared generic code and when
12514         doing calls which require a vtable/rgctx argument.
12515
12516 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12517
12518         * mini.c: Don't free the JIT info.
12519
12520         * driver.c: Changes in the JIT info table testing code.
12521
12522 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12523
12524         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12525         interruption. Fix some warnings.
12526
12527         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12528         interruption_checkpoint.
12529
12530 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12531
12532         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12533         from embedding applications.
12534
12535 2008-06-02  William Holmes  <billholmes54@gmail.com>
12536
12537         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12538           reserving 32 bytes on the stack when making calls. 
12539
12540         Contributed under MIT/X11 license.
12541
12542 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12543
12544         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12545         the linear IL branch.
12546
12547         * driver.c: Print out more information for --version on arm.
12548
12549 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12550
12551         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12552         bb_exit instead, since out of line bblocks might not actually be emitted
12553         out-of-line.
12554         
12555         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12556         maximum epilog size for out of line bblocks if tracing is enabled.
12557
12558         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12559
12560 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12561
12562         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12563
12564 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12565
12566         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12567         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12568         opcodes.
12569
12570 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12571
12572         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12573         the 'value' to store is a constant.
12574
12575         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12576
12577         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12578         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12579
12580 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12581
12582         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12583         for accessing method->generic_container.
12584
12585 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12586
12587         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12588         
12589         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12590
12591         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12592
12593         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12594         fails.
12595
12596 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12597
12598         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12599
12600         * mini.c: Handle the case when mono_class_vtable () fails.
12601
12602 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12603         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12604         the stat profiler.
12605
12606 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12607
12608         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12609         together with domain sharing.
12610
12611 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12612
12613         * mini.c: Treat callvirts to final methods like non-virtual calls
12614         when doing generic sharing, i.e. look them up in the runtime
12615         generic context.
12616
12617 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12618
12619         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12620         with computed types (for generic sharing).
12621
12622         * mini.c: Generic sharing for mkrefany and refanyval.
12623
12624 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12625
12626         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12627         possible.
12628
12629         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12630         the generic sharing code.
12631         
12632         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12633         when needed.
12634
12635 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12636
12637         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12638
12639 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12640
12641         * driver.c: updated copyright date
12642
12643 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12644
12645         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12646         needed.
12647
12648 2008-05-19  Martin Baulig  <martin@ximian.com>
12649
12650         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12651         pointing to the new `_mono_debug_using_mono_debugger' variable.
12652
12653         * driver.c
12654         (mono_main): Check mono_debug_using_mono_debugger() rather than
12655         the `MONO_INSIDE_MDB' environment variable to check whether we're
12656         inside the debugger.
12657
12658 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12659
12660         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12661         argument.
12662
12663 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12664
12665         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12666
12667         * mini.c: Added mini_assembly_can_skip_verification. This
12668         function checks if the assembly requested to skip verification. 
12669         Fixes part of #387274.
12670
12671 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12672
12673         * mini.c (mini_get_method): Disable the check for open generic classes when
12674         using generic sharing.
12675
12676         * generics.cs: Add a test for #387034.
12677
12678         * mini.c (mini_get_method): Check whenever the method class is an open generic
12679         type, and return NULL in that case, causing a verification error. Fixes
12680         #384123.
12681
12682 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12683
12684         * driver.c (mono_main): Revert r102623. The right
12685         thing to do is to enable the verifier under verifiable
12686         unless a --security flag was passed.
12687
12688         We need this non-trivial behavior for --verify-all otherwise
12689         mcs-compileall won't be able to use it. As it needs everything to
12690         be verified under validil.
12691
12692 2008-05-06  Martin Baulig  <martin@ximian.com>
12693
12694         Fix #383749.
12695
12696         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12697         (mono_debugger_thread_cleanup): Likewise.
12698         (mono_debugger_extended_notification): Likewise.
12699
12700 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12701
12702         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12703         against both inflated and non-inflated methods. We need to check against the
12704         generic definition for cases where the instantiated method is not visible.
12705         We need to check against the inflated types for cases where the instantiation
12706         changes any super type. This fixes #382986.
12707
12708         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12709         that check for visibiliy as generic params only appears as the type subject
12710         of tokens on call opcodes. Field manipulation and ldftn must always
12711         target an exact type.
12712
12713 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12714
12715         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12716         if no related --security flag is passed.
12717
12718 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12719
12720         * mini-arch.h: Prepare support for ppc64.
12721
12722         Contributed under MIT/X11 license.
12723
12724 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12725
12726         * aot-runtime.c: Prepare support for ppc64.
12727
12728         Contributed under MIT/X11 license.
12729
12730 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12731
12732         * mini-ops.h: Prepare support for ppc64.
12733
12734         Contributed under MIT/X11 license.
12735
12736 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12737
12738         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12739
12740         Contributed under MIT/X11 license.
12741
12742 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12743
12744         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12745         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12746         assemblies on windows.
12747
12748 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12749
12750         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12751         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12752         * main.c: Use UTF-8 encoded command line instead of Windows default code
12753         page on Windows to support Unicode.
12754         * driver.c (DllMain): New function for mixed-mode assembly support.
12755         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12756         export __stdcall functions without decoration.
12757
12758         Contributed under MIT/X11 license.
12759
12760 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12761
12762         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12763         saving it very early.
12764
12765 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12766
12767         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12768         deleted.  The only way to access the new RGCTX is via the
12769         trampline.
12770
12771         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12772         vtable instead of the RGCTX to static methods.
12773
12774         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12775         accessing the new RGCTX.
12776
12777         * generic-sharing.c: There is no separation between self, type
12778         arguments and other types in the RGCTX anymore.
12779
12780 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12781
12782         * mini-amd64.c (add_general): Remove previous stack adjustment.
12783         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12784         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12785         for 32 bytes of stack space reserved for all calls.
12786         
12787         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12788         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12789         adjustment.
12790         
12791         Code contributed under MIT/X11 license.
12792
12793 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12794
12795         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12796         against the root definition, peeling out method and type instantiations.
12797         Cache verify success results, code that fails verification is still
12798         checked multiple times.
12799
12800 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12801
12802         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12803
12804 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12805
12806         * mini-amd64.c (add_general): Always increment stack on Win64.
12807         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12808         on Win64.
12809         
12810         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12811         stack based argument handling on Win64.
12812         
12813         Code contributed under MIT/X11 license.
12814
12815 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12816
12817         * Makefile.am (version.h): Add support for git-svn.
12818
12819 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12820
12821         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12822         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12823         avoiding allocations and libc functions which might deadlock.
12824         
12825         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12826         'no-gdb-backtrace' option is set.
12827
12828         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12829
12830         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12831
12832 2008-04-21  Martin Baulig  <martin@ximian.com>
12833
12834         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12835         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12836
12837 2008-04-21  Martin Baulig  <martin@ximian.com>
12838
12839         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12840         `thread_vtable', `event_handler_ptr' and `event_handler'.
12841
12842 2008-04-21  Martin Baulig  <martin@ximian.com>
12843
12844         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12845         allows delayed initialization of the `executable_code_buffer' when
12846         attaching.
12847
12848 2008-04-21  Martin Baulig  <martin@ximian.com>
12849
12850         * mini.h (mono_debugger_create_notification_function): Removed.
12851         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12852
12853         * mdb-debug-info64.s
12854         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12855
12856         * mdb-debug-info32.s
12857         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12858
12859         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12860         currently only works on x86 and x86_64, so don't create it on ppc.
12861
12862 2008-04-21  Martin Baulig  <martin@ximian.com>
12863
12864         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12865
12866         * mini.c
12867         (mini_method_compile): In the fp elimination check, check
12868         `debug_options.mdb_optimizations' in addition to
12869         mono_debug_using_mono_debugger().       
12870
12871         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12872         disable some JIT optimizations which are only disabled when
12873         running inside the debugger.
12874         Added `--help-debug' option to describe the debugging options.
12875         (parse_debug_options): New static function to parse the `--debug'
12876         options, so we can easily add more stuff in future.
12877
12878 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12879
12880         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12881         the method has no body.
12882
12883 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12884
12885         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12886         assembly is not allowed in MSVC 64-bit compiler. 
12887         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12888         as we get floating point exceptions everywhere.
12889         
12890         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12891         correctly align arguments for call to throw_exception.
12892         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12893         
12894         Code contributed under MIT/X11 license.
12895
12896 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12897
12898         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12899
12900 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12901
12902         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12903
12904         * mini-amd64.c (NEW_INS): Set cil_code.
12905
12906         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12907         from mini-amd64.c so all debugger related logic is in one place.
12908
12909         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12910         later won't have a random ip assigned to them.
12911
12912 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12913
12914         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12915         the arch specific function initializes code_size.
12916         (mono_create_delegate_trampoline): Ditto.
12917
12918         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12919         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12920         platforms.
12921
12922         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12923         running under the debugger.
12924
12925         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12926         debugger.
12927
12928         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12929         debugger. Also move the disabling of optimizations here from driver.c.
12930         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12931         debugger.
12932
12933         * mini.h (MonoCompile): Add a few new flags.
12934
12935 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12936
12937         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12938         so the cil_code field of created MonoInst's is properly set.
12939         (mini_select_instructions): Ditto.
12940
12941         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12942         (MONO_INST_NEW_CALL): Ditto.
12943
12944         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12945         in many places so the ins->cil_code field is properly initialized.
12946
12947         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12948         place.
12949
12950 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12951
12952         * mini.c (mini_method_compile): Print a different message when compiling a 
12953         shared method.
12954         
12955         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12956         > 1.
12957
12958 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12959
12960         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12961         SSE2 instructions.
12962
12963         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12964         
12965 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12966
12967         * mini.c (handle_stack_args): Make this return void since its return value was
12968         never used. Also set cfg->unverifiable for invalid IL instead of calling
12969         G_BREAKPOINT ().
12970
12971 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12972
12973         * mini.c: Make sure "this" is live in catch clauses with type
12974         variables in shared generic code.
12975
12976 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12977
12978         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12979         generic_class_is_reference_type() to ensure the proper behaviour
12980         when sharing generic code and the type in question is a type
12981         argument.
12982
12983 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12984
12985         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12986         race conditions when printing thread dumps. Fixes #377738.
12987
12988 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12989         
12990         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12991         shows up when both MonoInst arguments can cause aliasig.
12992         There is likely no way in the current JIT to trigger this problem, but
12993         it showed up in the development of generics sharing, when in a new
12994         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12995         When the generics sharing code will be committed, its tests will be
12996         valid also for this bug.
12997
12998 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12999
13000         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
13001         PATCH_INFO_METHOD.
13002
13003         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
13004         NULL.
13005
13006 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
13007
13008         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
13009         use a more detailed exception message for InvalidCastException.
13010
13011         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
13012
13013         * driver.c (mono_main): Add --debug=casts option to turn on better 
13014         InvalidCastException message details.
13015
13016         * mini.c (mini_get_debug_options): New helper function to return the address of
13017         the debug_options variable.
13018
13019         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
13020         the jit_tls TLS variable.
13021
13022         * mini.c (mono_jit_tls): New TLS variable.
13023
13024         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
13025         option is used.
13026
13027 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
13028
13029         * mini.h: Removed verifer related stuff. This code was moved to verify.c
13030
13031         * mini.c: Removed verifer related stuff, code moved to verify.c.
13032
13033         * driver.c: Using code from verify.c instead of mini.c.
13034
13035 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
13036
13037         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
13038         longer valid.
13039
13040 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
13041
13042         * mini.c (check_for_method_verify): Enabling verification of
13043         corlib if mono_verify_all is set. Bugs in the verifier preventing that
13044         have been fixed.
13045
13046 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
13047
13048         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
13049         caller saved registers as well.
13050         
13051         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
13052         saved registers as well.
13053
13054 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
13055
13056         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
13057
13058         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
13059         code.
13060
13061 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
13062
13063         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
13064         to get_call_info.
13065         (get_call_info): Take a gsctx argument instead of 'cfg'.
13066
13067 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
13068
13069         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
13070         mono_verify_all is set.
13071
13072         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
13073
13074         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
13075
13076 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
13077
13078         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
13079         an exception.
13080
13081         * driver.c mini.c mini.h: Add a --verify-all development option to test the
13082         verifier and the code generated by the compiler.
13083
13084 2008-03-25  Mark Probst  <mark.probst@gmail.com>
13085
13086         * mini.c: Generic sharing of the non-nullable case of the box
13087         instruction.
13088
13089 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
13090
13091         * inssel.brg: Fix the build.
13092
13093         * iltests.il.in: Add a test for lconv.ovf.u8.un.
13094
13095 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
13096
13097         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
13098         Array:Address. Fixes #372410.
13099
13100         * iltests.il.in: New tests for readonly prefix.
13101
13102 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
13103
13104         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
13105         mini-trampolines.c.
13106
13107         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
13108         mini-exceptions.c.
13109
13110         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
13111         
13112         * mini.c (mono_decompose_op_imm): New helper function.
13113
13114         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
13115         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13116         return value.
13117
13118         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13119         mono_arch_output_basic_block. Fix warnings.
13120
13121         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
13122         for now.
13123
13124 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
13125
13126         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
13127         since the extra frame is now detected automatically inside the loop.
13128
13129         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
13130         opts which are now in mono_peephole_ins ().
13131         
13132         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
13133
13134         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
13135         frames and skip duplicate managed-to-native frames. Fixes #367665.
13136
13137         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13138         opts which are now in mono_peephole_ins ().
13139         (mono_arch_peephole_pass_2): Ditto.
13140
13141         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
13142
13143         * mini-codegen.c (mono_peephole_ins): New helper function containing the
13144         arch independent peephole optimizations.
13145
13146         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13147         opts which are now in mono_peephole_ins ().
13148
13149         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
13150         
13151         * mini-s390.c (mono_arch_output_basic_block): Fix build.
13152
13153         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
13154         pattern.
13155
13156         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
13157         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
13158         opcode. 
13159
13160 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
13161
13162         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
13163         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13164         return value.
13165
13166         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13167         mono_arch_output_basic_block. Fix warnings.
13168
13169 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13170
13171         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13172         conv.ovf.u.un.
13173
13174 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13175
13176         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13177         conv.ovf.u.un.
13178
13179         * iltests.il: Add new tests.
13180
13181 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
13182
13183         * mini.c: Removed Windows version macros.
13184
13185 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13186
13187         * generic-sharing.c: Put reflection types in the extensible part
13188         of the runtime generic context.
13189
13190         * mini.c: Generic sharing of the GetTypeHandle special case of the
13191         ldtoken instruction.
13192
13193 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13194
13195         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
13196
13197         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
13198         
13199         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
13200         consistency with the other version on the linear IR branch.
13201
13202         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
13203
13204         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
13205
13206         * iltests.il.in: Add new tests.
13207
13208 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
13209
13210         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
13211
13212         * iltests.il.in: Add new tests.
13213
13214 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13215
13216         * mini.c: Two variables with the same name were declared in
13217         nesting contexts and one wasn't initialized.  Fixed.
13218
13219 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13220
13221         * mini.c: Generic sharing of the initobj instruction.
13222
13223 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13224
13225         * mini.c: make the test to optimize ldtoken from typeof() more
13226         precise.
13227
13228 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13229
13230         * mini.c: Generic sharing of the initobj instruction for reference
13231         types.
13232
13233 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13234
13235         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13236         the mono_breakpoint_clean_code() code to perform bound checks.
13237
13238 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13239
13240         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13241         mono_arch_patch_callsite() to include the start of the managed method
13242         to be able to perform bound checks.
13243
13244 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13245
13246         * mini.c: Generic sharing for the isinst instruction.
13247
13248 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13249
13250         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13251         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13252         with the runtime generic context argument.
13253
13254         * mini.c: Share calls to several types of unsharable methods by
13255         putting the address of the method code in the runtime generic
13256         context and doing an indirect call.
13257
13258         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13259         to switches.
13260
13261 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13262
13263         * generic-sharing.c: Change due to a change in the runtime genric
13264         context API.
13265
13266 2008-03-15  Martin Baulig  <martin@ximian.com>
13267
13268         * tramp-x86.c
13269         (mono_arch_nullify_class_init_trampoline): Add call to
13270         mono_breakpoint_clean_code() to make things work when running
13271         inside the debugger.
13272
13273         * tramp-amd64.c
13274         (mono_arch_nullify_class_init_trampoline): Add call to
13275         mono_breakpoint_clean_code() to make things work when running
13276         inside the debugger.
13277
13278 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13279
13280         * inssel-long.brg (reg): Fix 64 bit build.
13281
13282 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13283
13284         * mini.c, mini.h: Share static generic code by passing it an
13285         implicit argument pointing to the runtime generic context.
13286
13287         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13288         inssel-long32-mips.brg: New opcodes for calling shared static,
13289         which need to be passed the runtime generic context.
13290
13291         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13292         argument on the stack in the prologue if needed.  New function for
13293         finding the runtime generic context argument from the registers
13294         saved by the trampoline.
13295
13296         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13297         runtime generic context argument.
13298
13299         * tramp-amd64.c: Also restore the register used for the runtime
13300         generic context argument.
13301
13302         * mini-trampoline.c: Resolve shared static calls by consulting the
13303         runtime generic context via the new argument.
13304
13305         * generic-sharing.c: Add an argument to sharability-checking
13306         functions that specifies whether type variables should be treated
13307         as sharable type arguments.
13308
13309         * inssel-x86.brg: Removed a superfluous, buggy rule.
13310
13311         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13312         to switches.
13313
13314 2008-03-14  Martin Baulig  <martin@ximian.com>
13315
13316         * debug-debugger.c (main_thread_handler): Call
13317         mono_runtime_run_main() without sending any notifications.
13318
13319         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13320
13321 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13322
13323         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13324
13325 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13326
13327         * tramp-x86.c: Fixed register restore offsets in the trampoline
13328         code for ECX and EDX.
13329
13330 2008-03-12  Geoff Norton  <gnorton@novell.com>
13331
13332         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13333         different ucontext_t implementations.
13334         * exceptions-arm.c: Use the above defines to get exceptions working on 
13335         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13336         * mini-arm.c: Implement iPhone icache support (based on a patch by
13337         Luke Howard lukeh@padl.com)
13338
13339 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13340
13341         * mini.c: Enable generic sharing of calls to non-static
13342         non-interface non-generic non-value-type methods.
13343
13344         * mini-trampolines.c: Resolve calls from shared generic code.
13345
13346 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13347
13348         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13349
13350         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13351
13352 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13353
13354         * mini.c: some fixes for the AOT compiler.
13355
13356 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13357
13358         * cpu-amd64.md: Add clob:1 to some float opcodes.
13359
13360 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13361
13362         * mini.h: Added MiniVerifierMode enumeration.
13363
13364         * mini.c: Added mini_verifier_set_mode to control
13365         the usage of the new verifier.
13366
13367         * mini.c (mono_method): Integrated the new verifier.
13368
13369         * driver.c: Extended --security option with validil and
13370         verifiable options to activate the new verifier.
13371
13372 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13373
13374         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13375         optimization to ctors taking 0 or 2 arguments too.
13376
13377         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13378         a bit.
13379
13380         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13381
13382         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13383
13384 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13385
13386         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13387         non-aot case as well.
13388
13389         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13390
13391         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13392         changes.
13393
13394         * aot-compiler.c (encode_patch): Ditto.
13395
13396         * mini.h (G_MININT32): Fix the definition of this.
13397
13398 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13399
13400         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13401
13402         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13403
13404 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13405
13406         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13407         methods returning vtypes in registers.
13408         (mono_arch_allocate_vars): Ditto.
13409
13410         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13411
13412         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13413
13414         * generics.cs: Add a test from the linear IR branch.
13415
13416         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13417
13418         * mini.c (inline_method): Cache failed inline attempts.
13419
13420 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13421
13422         * mini.c: For shared methods of generic classes put the location
13423         of "this" into the MonoGenericJitInfo.
13424
13425         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13426         register out of a MonoContext by register number.  Add the generic
13427         sharing context as an argument to mono_arch_find_this_argument().
13428
13429         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13430         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13431         for new arch function.
13432
13433         * mini-exception.c: Handle open exception clauses in shared
13434         generic code.
13435
13436         * mini-trampolines.c: Supply additional argument to
13437         mono_arch_find_this_argument().
13438
13439 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13440
13441         * Makefile.am (regtests): Run the bench.exe tests last.
13442
13443 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13444
13445         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13446         a bit.
13447
13448 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13449
13450         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13451         with MS.
13452
13453         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13454         
13455         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13456
13457         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13458         whose class has no cctor.
13459
13460         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13461
13462 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13463
13464         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13465         unverified.
13466
13467 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13468
13469         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13470         to be in sync with the code on the linear IR branch.
13471
13472         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13473
13474         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13475
13476 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13477
13478         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13479
13480         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13481
13482         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13483
13484         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13485
13486         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13487         
13488         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13489         body.
13490
13491 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13492
13493         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13494         OP_LOADR4_MEMBASE emission.
13495
13496         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13497         (mono_spillvar_offset_float): Ditto.
13498
13499         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13500
13501         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13502         emission.
13503
13504         * basic-long.cs: Add regression tests for them.
13505
13506         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13507         use.
13508         (mono_arch_allocate_vars): Fix representation of single-precision float
13509         argument.
13510         (mono_arch_output_basic_block): Ditto.
13511
13512         * inssel-mips.brg: Ditto, remove duplicate items.
13513
13514         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13515         arguments of tail calls as on other platforms.
13516         (mono_arch_output_basic_block): Handle tail calls.
13517
13518         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13519         register.
13520
13521         * objects.cs (test_5_pass_static_struct): Add test for it.
13522
13523         Contributed under MIT/X11 license.
13524
13525 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13526
13527         * Makefile.am: Use gmcs for compiling the regression tests.
13528
13529         * *.2.cs *.2.il: Rename to *.cs and *.il.
13530
13531 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13532
13533         * regalloc.h: Make the vassign array smaller.
13534
13535         * mini.c (mini_method_compile): Remove an unused field in cfg.
13536
13537         * mini-codegen.c: Add a bunch of micro optimizations.
13538
13539 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13540
13541         * regalloc.h: Remove some unused fields.
13542
13543 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13544
13545         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13546
13547         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13548
13549 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13550
13551         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13552
13553         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13554         trampoline: Fetch an entry from the runtime generic context.  If
13555         it's NULL, jump to the actual trampoline to fill the runtime
13556         generic context.  Otherwise, return it.
13557
13558         * mini.c: Call the lazy fetch trampoline to get entries out of the
13559         runtime generic context.
13560
13561         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13562         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13563         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13564
13565 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13566
13567         * mini.c: Fetch data out of the extensible part of the runtime
13568         generic context instead of calling a helper function.
13569
13570         * generic-sharing.c: Some functions moved into
13571         metadata/generic-sharing.c.  Helper function for fetching other
13572         types now checks and asserts against extensible rgctx (just for
13573         debugging purposes - the helper function isn't called anymore
13574         unless for debugging).
13575
13576 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13577
13578         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13579         for tail calls up to the point that the tests in iltests.exe run. Also add a
13580         dummy CKFINITE implementation.
13581         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13582         needed for trampoline LMF frames.
13583
13584         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13585         trampoline LMF frames.
13586
13587 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13588
13589         * mini.c (inline_method): clean any pending loader error when inlining fail.
13590         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13591
13592 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13593
13594         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13595
13596         * aot-runtime.c (decode_patch_info): Ditto.
13597
13598         * mini.c (mono_resolve_patch_target): Ditto.
13599         
13600         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13601         icall wrappers.
13602
13603         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13604         
13605         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13606         if it references an icall address.
13607
13608 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13609
13610         * cpu-s390x.md: Remove some more unused opcodes.
13611         
13612         * cpu-s390x.md: Remove some unused opcodes.
13613
13614         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13615         mono_op_imm_to_op ().
13616
13617         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13618         instead of a switch statement.
13619         
13620         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13621         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13622
13623         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13624         
13625         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13626
13627         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13628         -1.
13629
13630 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13631
13632         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13633         opened. Fixes #362607.
13634
13635         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13636
13637         * iltests.il.in: Add a test for static methods in interfaces.
13638
13639 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13640
13641         * genmdesc.c (build_table): Fix a crash on older glib versions.
13642
13643         * cpu-sparc.md: Remove some unused opcodes.
13644         
13645         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13646         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13647
13648         * cpu-amd64.md: Remove some unused opcodes.
13649
13650         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13651         like the other opcodes.
13652
13653 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13654
13655         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13656
13657         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13658
13659         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13660         variables 'cfg' instead of 'm' for consistency.
13661
13662         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13663
13664         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13665         argument holding the vtype return address, to avoid the ambigious use of
13666         cfg->ret for this purpose.
13667
13668         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13669
13670         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13671         
13672         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13673         new mono_print_ins () function which only takes one argument.
13674
13675 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13676
13677         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13678         macro arguments.
13679
13680 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13681
13682         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13683
13684         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13685
13686         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13687         opcodes and other small changes.
13688
13689         * mini-ops.h: Add some new opcodes from the linear IR branch.
13690
13691         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13692
13693         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13694         opcodes, use the REG_MEMBASE opcodes instead.
13695         
13696         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13697         opcodes, use the REG_MEMBASE opcodes instead.
13698         
13699         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13700         linear IR branch.
13701
13702         * mini.c (mono_op_imm_to_op): New helper function.
13703
13704         * mini-ops.h: Add some opcodes from linear IR branch.
13705
13706 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13707
13708         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13709         <tsv@solvo.ru>.
13710
13711 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13712
13713         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13714         OP_ICONV_TO_R4/R8.
13715
13716         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13717
13718 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13719
13720         * aot-compiler.c (emit_method_code): Add an assert.
13721
13722         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13723         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13724         methods.
13725
13726 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13727
13728         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13729         some load/store opcodes so they are consistent. 
13730         (mono_arch_emit_prolog): Simplify some code.
13731
13732         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13733
13734         * objects.cs: Add tests for large argument offsets on ARM.
13735
13736         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13737         stack offsets. Fixes #359651.
13738
13739         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13740
13741         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13742
13743         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13744
13745         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13746
13747         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13748
13749         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13750         rid of CEE_CONV_R_UN.
13751
13752         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13753
13754 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13755
13756         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13757
13758         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13759
13760         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13761
13762         * cpu-amd64.md: Remove some unused opcodes.
13763
13764         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13765
13766         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13767
13768         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13769         arch specific functions for its parts. Call the peephole pass after local
13770         regalloc so the prolog can compute a more accurate max_offset.
13771         
13772         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13773         the corresponding OP_I/OP_L opcodes.
13774
13775         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13776
13777         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13778
13779 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13780
13781         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13782         as they are handled in mini.c.
13783
13784         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13785         
13786         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13787         case since it is handled in mini.c.
13788
13789         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13790
13791         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13792
13793         * *.c: Use the new opcodes in the IR and back end code.
13794
13795         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13796
13797         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13798
13799 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13800
13801         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13802         an assert because it has a race condition.
13803
13804 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13805
13806         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13807
13808         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13809
13810         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13811
13812         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13813         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13814
13815 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13816
13817         * cpu-amd64.md (move): Correct the maximum size of move.
13818
13819 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13820
13821         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13822         the generic class init trampoline to return quickly if the class
13823         is already inited.
13824
13825 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13826
13827         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13828         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13829
13830 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13831
13832         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13833         branch.
13834
13835 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13836
13837         * objects.cs: Add some soft-float tests.
13838
13839         * mini.c: Fix a couple more soft-float issues.
13840
13841         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13842
13843         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13844         avoid a REX prefix.
13845
13846 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13847
13848         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13849         exception happens while compiling a virtual method.
13850
13851 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13852
13853         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13854         
13855         * mini-sparc.c: Fix build.
13856
13857         * mini-sparc.c (get_call_info): Add support for generic sharing.
13858
13859         * mini-exceptions.c: Add a FIXME.
13860
13861 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13862
13863         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13864         altstack handling code.
13865
13866         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13867         
13868         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13869
13870         * mini-s390.c: Add support for generic sharing.
13871
13872         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13873         Fix CAS on s390.
13874         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13875
13876         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13877
13878         * mini-s390x.c: Add support for generic sharing.
13879         
13880         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13881         Fix CAS on ia64.
13882         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13883
13884         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13885         can be used since it takes a 16 bit signed immediate.
13886
13887         * inssel-s390x.brg: Fix OP_SETRET.
13888
13889         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13890
13891         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13892
13893         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13894
13895         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13896
13897         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13898         in one place.
13899
13900         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13901         stuff.
13902
13903         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13904         of the unused mono_arch_patch_delegate_trampoline stuff.
13905
13906 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13907
13908         * basic-long.cs: Move the fp related tests to basic-float.cs.
13909
13910         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13911
13912         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13913
13914         * basic-calls.cs: Add a test for proper float argument passing.
13915
13916         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13917         if the context corresponds to an exception received through a signal.
13918
13919         * exceptions.cs: Add a test for nullref handling at the start of a try
13920         clause.
13921
13922         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13923
13924         * jit-icalls.c (mono_break): New JIT icall.
13925
13926         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13927
13928         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13929
13930 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13931
13932         * cpu-*.md: Get rid of unused opcodes.
13933
13934         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13935
13936         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13937         by all platforms.
13938
13939         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13940         define.
13941
13942         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13943         the arch independent trampoline code in mini-trampolines.c.
13944
13945         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13946
13947         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13948
13949         * mini-s390.h: Remove an unused define.
13950         
13951         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13952         the arch independent trampoline code in mini-trampolines.c.
13953
13954         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13955
13956 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13957
13958         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13959
13960         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13961
13962         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13963
13964         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13965
13966         * cpu-amd64.md: Use smaller sizes for int opcodes.
13967
13968         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13969
13970         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13971         objects.cs.
13972
13973         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13974         debugging.
13975
13976         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13977         instead of though a pointer to save an indirection when accessing elements of
13978         the array.
13979
13980         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13981         some typos.
13982         (NOT_IMPLEMENTED): New helper macro.
13983         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13984         of a bb.
13985
13986         * *.c: Use the new helper macro.
13987
13988 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13989
13990         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13991
13992 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13993
13994         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13995         stack slots.
13996
13997 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13998
13999         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
14000         profiling is enabled.
14001         
14002         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
14003         the end.
14004         (mono_arch_emit_prolog): Add more first bblock optimizations.
14005
14006         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
14007         in order if possible.
14008         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
14009         bblock, since the arguments are still in their original registers.
14010
14011         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
14012
14013 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
14014
14015         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
14016         as well.
14017
14018         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
14019         offset 0.
14020
14021         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
14022
14023         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
14024         process async exceptions received while in unmanaged code.
14025
14026         * mini.c (mini_init): Install a callback with the runtime which will be called
14027         when a thread receives an async exception while in unmanaged code.
14028
14029         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
14030
14031         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
14032
14033 2008-01-16  Wade Berrier  <wberrier@novell.com>
14034
14035         * cpu-g4.md:
14036         * cpu-arm.md:
14037         * cpu-s390x.md:
14038         fix build
14039
14040 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
14041
14042         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
14043         compilation with sun cc.
14044
14045         * cpu-*.md: Fix the build.
14046
14047         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
14048
14049         * mini-amd64.h: Add some comments to the MonoLMF structure.
14050
14051         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
14052         
14053         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
14054         in the LMF structure if possible. This saves two instructions in the
14055         managed->native wrappers.
14056
14057         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
14058
14059 2008-01-16  Mark Probst  <mark.probst@gmail.com>
14060
14061         * generic-sharing.c: New type argument lookup code which uses the
14062         runtime generic context template.
14063
14064 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
14065
14066         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
14067
14068         * mini-arm.c (add_general): Fix arm eabi parameter passing.
14069         (mono_arch_output_basic_block): Fix localloc implementation.
14070
14071         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
14072
14073         * mini-ia64.c (peephole_pass): Fix ia64 build.
14074
14075         * mini-amd64.c (peephole_pass): Fix a warning.
14076         
14077         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
14078         at a constant offset from sp/fp.
14079
14080         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
14081         instead of obtaining it from *lmf in the managed method case.
14082
14083 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
14084
14085         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
14086
14087 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
14088
14089         * mini.h (MonoInstList): New type.
14090         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
14091         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
14092         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
14093         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
14094         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
14095         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
14096         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
14097         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
14098         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
14099         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
14100         MONO_INST_LIST_FOR_EACH_ENTRY,
14101         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
14102         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
14103         mono_inst_list_first, mono_inst_list_last,
14104         mono_inst_list_next, mono_inst_list_prev): New instruction
14105         list handling interfaces.
14106         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
14107         list head 'ins_list'.
14108         (MonoInst): Replace next pointer with list head 'node'.
14109         (MonoCallInst): Make 'out_args' a MonoInstList.
14110         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
14111         (MonoCompile): Delete reverse_inst_list and
14112         reverse_inst_list_len.
14113         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
14114         mono_arch_lowering_pass, mono_arch_local_regalloc,
14115         mono_arch_output_basic_block, mono_arch_emit_prolog):
14116         Convert to new instruction lists.
14117         (insert_after_ins): Delete.
14118         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
14119         instruction lists.
14120         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
14121         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
14122         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
14123         mono_emulate_opcode, mono_emit_load_got_addr,
14124         inline_method, mono_method_to_ir, mono_print_bb_code,
14125         print_dfn, decompose_pass, nullify_basic_block,
14126         replace_out_block_in_code, remove_block_if_useless,
14127         merge_basic_blocks, move_basic_block_to_end,
14128         try_unsigned_compare, optimize_branches, mono_print_code,
14129         mini_select_instructions, remove_critical_edges): Likewise.
14130         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
14131         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
14132         mono_arch_output_basic_block, mono_arch_emit_prolog):
14133         Likewise.
14134         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
14135         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14136         mono_arch_output_basic_block): Likewise.
14137         (inst_list_prepend, insert_after_ins): Delete.
14138         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
14139         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
14140         instruction lists.
14141         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
14142         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
14143         mono_arch_emit_prolog): Likewise.
14144         * cfold.c (mono_constant_fold): Likewise.
14145         * liveness.c (visit_bb, mono_analyze_liveness,
14146         optimize_initlocals): Likewise.
14147         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
14148         * graph.c (mono_draw_code_cfg): Likewise.
14149         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
14150         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
14151         mono_ssa_cprop): Likewise.
14152         * abcremoval (get_relations_from_previous_bb, process_block):
14153         Likewise.
14154         * local-propagation (mono_cprop_invalidate_values,
14155         mono_local_cprop_bb): Likewise.
14156         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
14157         peephole_pass, mono_arch_output_basic_block,
14158         mono_arch_emit_prolog): Likewise.
14159         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
14160         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14161         mono_arch_emit_prolog): Likewise.
14162         (insert_after_ins): Delete.
14163         * aliasing.c (print_code_with_aliasing_information,
14164         mono_build_aliasing_information, mono_aliasing_deadce):
14165         Convert to new instruction lists.
14166         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
14167         peephole_pass, NEW_INS, mono_arch_lowering_pass,
14168         mono_arch_local_regalloc, mono_arch_output_basic_block):
14169         Likewise.
14170         (insert_after_ins): Delete.
14171         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
14172         peephole_pass, mono_arch_output_basic_block): Convert to
14173         new instruction lists.
14174         * mini-codegen (InstList, inst_list_prepend,
14175         insert_after_ins): Delete.
14176         (insert_before_ins, get_register_force_spilling,
14177         get_register_spilling, free_up_ireg, free_up_reg,
14178         create_copy_ins, create_spilled_store, alloc_int_reg,
14179         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
14180         to new instruction lists.
14181         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
14182         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14183         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
14184         (insert_after_ins): Delete.
14185         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
14186         mono_arch_local_regalloc, mono_arch_output_basic_block,
14187         mono_arch_call_opcode): Convert to new instruction lists.
14188         (insert_after_ins): Delete.
14189         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
14190         peephole_pass, mono_arch_output_basic_block,
14191         mono_arch_emit_prolog): Convert to new instruction lists.
14192
14193 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
14194
14195         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
14196
14197         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
14198         Fixes #353182.
14199
14200         * Makefile.am (version.h): Make this work with non-bash shells.
14201
14202 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
14203
14204         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
14205
14206 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14207
14208         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
14209         the InitializeArray optimization.
14210
14211 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14212
14213         * mini.c driver.c: Don't include os/gc_wrapper.h.
14214
14215 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14216
14217         * mini.c (print_jit_stats): Print GC statistics if available.
14218
14219 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14220
14221         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14222
14223 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14224
14225         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14226
14227 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14228
14229         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14230         
14231         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14232
14233         * driver.c (mono_main): Ditto.
14234
14235 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14236
14237         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14238
14239         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14240         in the vtable can't be encoded.
14241         (compile_method): Ditto.
14242
14243 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14244
14245         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14246         defined.
14247
14248         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14249         lmf->rbp.
14250
14251         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14252         the top LMF entry belongs to the current method.
14253
14254         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14255
14256 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14257
14258         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14259         
14260         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14261
14262         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14263
14264         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14265
14266         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14267
14268         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14269         implementation.
14270
14271         * basic-float.cs: Add an ulong->double cast test.
14272
14273 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14274
14275         * mini.c (mono_method_to_ir): Fix a warning.
14276
14277 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14278
14279         * mini-ops.h: Add OP_SWITCH.
14280
14281         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14282         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14283
14284 2007-12-11  Geoff Norton  <gnorton@novell.com>
14285
14286         * mini-s390x.c: Minor change to the MAX() define to allow
14287         it to compile with other gcc versions.
14288
14289 2007-12-11  Geoff Norton  <gnorton@novell.com>
14290
14291         * cpu-s390x.md:
14292         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14293
14294 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14295
14296         exceptions-arm.c (mono_arch_get_restore_context): Restore
14297         the frame pointer.
14298
14299         exceptions-arm.c (throw_exception): Save the frame pointer.
14300         This is a partial fix for #323747. Only the client side is
14301         fixed.
14302
14303 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14304
14305         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14306         was using an unrelated variable to log the class which
14307         needed the cctor to be called. This was crashing on arm.
14308
14309 2007-12-09  Robert Jordan  <robertj@gmx.net>
14310
14311         * mini-x86.c (mono_arch_emit_epilog):
14312         Consider all kinds of 64-bit types. Fixes #323114.
14313
14314 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14315
14316         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14317
14318 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14319
14320         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14321
14322 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14323
14324         * mini.c: run type ctor before allocating an object, not only
14325         when running it's constructor method (fixes at least part of bug #342507).
14326
14327 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14328         
14329         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14330         
14331         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14332         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14333         function.
14334
14335         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14336         mono_generic_class_init_trampoline () the same as it is done with the other
14337         trampolines.
14338
14339         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14340         aot-runtime.c aot-compiler.c: Implement AOT support.    
14341
14342 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14343
14344         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14345         build for archs which don't have the vtable trampoline defined
14346         yet.
14347
14348 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14349
14350         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14351
14352         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14353
14354         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14355
14356         * tramp-<ARCH>.c: Use the new helper function.
14357
14358 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14359
14360         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14361         trampoline call, which takes a vtable argument.
14362
14363         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14364         OP_TRAMPCALL_VTABLEs like other calls.
14365
14366         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14367         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14368         call.  Implemented a support function which fetches the vtable
14369         from a register set.
14370
14371         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14372         Implemented a generic class init trampoline, using the
14373         OP_TRAMPCALL_VTABLE opcode.
14374
14375         * mini.c: Implemented static field access when sharing generic
14376         code.  This implies initing the class using the new
14377         OP_TRAMPCALL_VTABLE call.
14378
14379 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14380
14381         * mini.c: Don't compile methods with sharing enabled if their
14382         classes are disabled for sharing.
14383
14384 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14385
14386         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14387         opcodes. Fixes #346563.
14388
14389         * objects.cs: Add a new test.
14390
14391         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14392
14393         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14394         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14395
14396 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14397
14398         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14399
14400 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14401
14402         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14403         code stream.
14404
14405 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14406
14407         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14408
14409         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14410         optimization in the AOT case.
14411         
14412 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14413
14414         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14415         
14416         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14417
14418         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14419
14420         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14421
14422         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14423         is created by the inlined delegate ctor.
14424
14425         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14426
14427         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14428
14429 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14430
14431         * cpu-x86.md: Fix the length of ckfinite.
14432
14433 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14434
14435         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14436         
14437         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14438         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14439
14440         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14441
14442         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14443         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14444
14445 2007-11-28  Martin Baulig  <martin@ximian.com>
14446
14447         * mini-x86.c
14448         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14449         after creating the trampoline.
14450
14451 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14452
14453         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14454
14455         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14456         the same version.
14457
14458         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14459         instead of the calling method to help AOT.
14460
14461         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14462
14463 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14464
14465         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14466         is defined.
14467
14468 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14469
14470         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14471         
14472         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14473         (encode_method_ref): No need to handle generic method definitions specially.
14474
14475         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14476
14477         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14478         decode_klass_info.
14479
14480         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14481         encode_klass_info.
14482         (compile_method): Enable generic sharing.
14483
14484 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14485
14486         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14487         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14488
14489         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14490         generic code.
14491
14492         * mini-trampolines.c: Fix a warning.
14493
14494         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14495         NEW_PCONST.
14496         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14497         (generic_class_is_reference_type): Remove unused function.
14498
14499         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14500         in the generic vtable trampoline case.
14501
14502         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14503         
14504         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14505         return an AOT method based on a vtable slot.
14506
14507         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14508
14509         * mini.c (mini_get_vtable_trampoline): Export this.
14510
14511 2007-11-22  Martin Baulig  <martin@ximian.com>
14512
14513         * debug-debugger.h
14514         (MonoDebuggerInfo): Move `debugger_version' up.
14515
14516 2007-11-22  Martin Baulig  <martin@ximian.com>
14517
14518         * mini-amd64.c
14519         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14520
14521         * mini-trampolines.c
14522         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14523         after compiling the method.
14524
14525 2007-11-20  Martin Baulig  <martin@ximian.com>
14526
14527         * debug-mini.c
14528         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14529         (mono_debugger_remove_breakpoint): Likewise.
14530         (mono_debugger_check_breakpoints): Likewise.
14531
14532         * debug-debugger.c: Implement the new breakpoint interface here.
14533
14534 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14535
14536         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14537         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14538
14539         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14540
14541 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14542
14543         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14544
14545         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14546         mini.c.
14547
14548         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14549         mini.c.
14550
14551         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14552         returning a vtype in a register.
14553
14554         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14555         here from the arch specific code.
14556
14557         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14558         mini.c.
14559
14560         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14561         (mono_arch_emit_prolog): Increment maximum prolog size.
14562
14563         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14564         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14565
14566         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14567         MonoGenericSharingContext.
14568
14569         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14570         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14571
14572 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14573
14574         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14575         which extract fields out of the runtime generic context.  Full
14576         sharing of the NEWARR opcode.
14577
14578 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14579
14580         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14581         --enable-minimal=ssa.
14582
14583 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14584
14585         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14586         mono_marshal_get_delegate_invoke () signature change.
14587
14588 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14589
14590         * mini.c: Removed the shared context in favor of the generic
14591         sharing context.  Allocate the MonoJitInfo structure with room for
14592         the generic sharing context if it's needed.
14593
14594         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14595         domain-internals.h now.
14596
14597         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14598
14599         * generic-sharing.c: Several changes for working without a shared
14600         context and instead operating on open types instead.
14601
14602 2007-11-12  David S. Miller  <davem@davemloft.net>
14603
14604        * inssel-sparc.brg: Fix double instruction emit.
14605
14606 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14607
14608         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14609         Get/Set/Address methods.
14610         
14611         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14612         mono_marshal_get_delegate_invoke signature change.
14613
14614 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14615
14616         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14617         This can happens with dynamic methods. Fixes the other bug in #322722.
14618
14619 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14620
14621         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14622         BX call sequence.
14623
14624         * mini-arm.c (arm_patch): Implement patching of BX call
14625         sequence. Fixes one of the bugs in #322722.
14626
14627 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14628
14629        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14630        under Linux.  We only need to flush every 32-byte cache line.    
14631
14632 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14633
14634         * mini.c:
14635         move_basic_block_to_end: Add branches when needed, eventually creating
14636         a new BB.
14637         optimize_branches: added a parameter that tells if it's ok to create
14638         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14639         and avoid calling move_basic_block_to_end when it's not ok.
14640         Fixes bug 318677.
14641
14642 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14643
14644         * mini.c: Abort inlining call to InitializeArray if something
14645         looks wrong.  Let the icall handle it, which now has proper safety
14646         checks.
14647
14648 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14649
14650         * mini.c (mono_spill_call): add support for soft-float.
14651
14652         * mini.c (mono_method_to_ir): add support for soft-float
14653         to inlined functions that return float.
14654
14655         * mini.c (mono_method_to_ir): add support for soft-float
14656         to cee_stsfld opcode on float fields.
14657
14658 2007-11-05  Geoff Norton  <gnorton@novell.com>
14659
14660         * mini-x86.h: Fix the structure access for X86 Leopard.
14661
14662
14663 2007-11-05  Martin Baulig  <martin@ximian.com>
14664
14665         * mini-trampolines.c
14666         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14667         after compiling the method to notify the debugger.
14668
14669 2007-11-05  Martin Baulig  <martin@ximian.com>
14670
14671         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14672
14673 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14674
14675         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14676         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14677
14678 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14679
14680         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14681         native-to-managed wrappers.
14682         
14683 2007-11-01  Geoff Norton  <gnorton@novell.com>
14684
14685         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14686         members.
14687
14688 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14689
14690         * mini.c, mini-x86.c: when getting back from unmanaged code
14691         to managed via a marshaled delegate we also need to set the
14692         right domain.
14693
14694 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14695
14696         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14697         for amd64.
14698
14699 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14700
14701         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14702         let the debugger or other external agents to tell the JIT when
14703         a sw breakpoint has been inserted in the code that the JIT needs
14704         to be able to inspect.
14705
14706 2007-10-31  Martin Baulig  <martin@ximian.com>
14707
14708         * debug-debugger.h
14709         (MonoDebuggerInfo): Remove `runtime_class_init'.
14710
14711 2007-10-30  Martin Baulig  <martin@ximian.com>
14712
14713         * debug-mini.h
14714         (mono_debugger_thread_created): Added `MonoThread *' argument.
14715         (mono_debugger_extended_notification): New public method.
14716         (mono_debugger_trampoline_compiled): New public method.
14717
14718         * debug-mini.c
14719         (MonoDebuggerThreadInfo): Added `thread' and
14720         `extended_notifications' fields.
14721
14722         * debug-debugger.c
14723         (debugger_executable_code_buffer): New static variable.
14724
14725         * debug-debugger.h
14726         (MonoDebuggerInfo): Added `executable_code_buffer',
14727         `executable_code_buffer_size', `breakpoint_info_area',
14728         `breakpoint_table' and `breakpoint_table_size'.
14729
14730 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14731
14732         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14733         that IP  either is an unused value or the vtable pointer. IMT 
14734         calls use vtable + offset now. Reduced by almost half the size
14735         of IMT entries.
14736
14737 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14738
14739         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14740         defines to access param registers. Replace long usage with
14741         gsize as sizeof(long) != sizeof(void*) on Win64.
14742
14743         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14744         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14745         instead of non-existant _GetAddressOfReturnAddress.
14746
14747         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14748         param registers. Save/restore %rdi and %rsi in MonoLMF.
14749
14750         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14751         param registers. Modify (throw_exception) signature to take 
14752         %rdi and %rsi on Win64. 
14753
14754         Code is contributed under MIT/X11 license.
14755
14756 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14757
14758         * helpers.c: unlink debugging output files.
14759
14760 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14761
14762         * mini.c: Move mono_create_ftnptr () to object.c.
14763
14764 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14765
14766         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14767         optional. This function can now be used to disassemble code generated
14768         outside the JIT such as trampolines and IMT thunks.
14769
14770         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14771
14772         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14773         vtable pointer from a ldr instruction.
14774
14775         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14776         new IMT call sequence.
14777
14778         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14779         call sequence for interface invocations.
14780
14781         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14782         for imt support. This function is empty since IMT on ARM requires no
14783         special handling on the IR side.
14784
14785         * mini-arm.c (mono_arch_find_imt_method): added, required for
14786         imt support.
14787
14788         * mini-arm.c (mono_arch_find_this_argument): added, required
14789         for imt support.
14790
14791         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14792         a ldr instruction to load a value stored in the code stream.
14793
14794         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14795         for imt support.
14796
14797
14798 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14799
14800         * mini.c (mini_init): Install the jump trampoline callback.
14801
14802 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14803
14804         * mini-trampolines.c: handle synchronized methods with the common
14805         vtable trampoline (bug #335601).
14806
14807 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14808
14809         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14810
14811         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14812         64 bit platforms.
14813
14814         * mini-ia64.h mini-ia64.c: Add support for IMT.
14815
14816         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14817         prolog. Fixes #331958.
14818
14819 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14820
14821         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14822
14823 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14824
14825         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14826         trampoline.
14827
14828 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14829
14830         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14831         trampoline.
14832
14833 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14834
14835         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14836         trampoline.
14837
14838 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14839
14840         * mini-trampolines.c: changed the magic rampoline to understand
14841         the common vtable trampoline method: the method to invoke is
14842         determined by the vtable displacement of the call.
14843
14844 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14845
14846         * mini.c, mini.h: register the common vtable trampoline if the
14847         architecture supports it.
14848
14849 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14850
14851         * cpu-amd64.md: use the correct max length for tls_get.
14852
14853 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14854
14855         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14856         CEE_STELEM_ANY. Fixes #333696.
14857
14858 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14859
14860         * exceptions-x86.c: provide more graceful handling of the case where
14861         we followed a bogus function pointer from managed code (bug #332866).
14862
14863 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14864
14865         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14866         replaces the generic_shared flag and will carry more information
14867         in the future.
14868
14869         * generic-sharing.c: Added mini_type_stack_size() which allows
14870         allows open types if given a generic sharing context.
14871         mini_get_basic_type_from_generic() takes a
14872         MonoGenericSharingContext* instead of a MonoCompile* now.
14873
14874         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14875         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14876         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14877         changes above.  Just passing arguments through to the right
14878         places.
14879
14880 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14881
14882         * mini-arm.c: unify the call emission to emit_code_seq().
14883
14884 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14885
14886         * tramp-arm.c: reduced the trampoline size.
14887
14888 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14889
14890         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14891         variable handling out of arch-specific code.
14892
14893 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14894
14895         * mini-arm.c: implemented fast delegate dispatch.
14896
14897 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14898
14899         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14900         that fp elimination is turned off if the space required by locals is too
14901         big. Fixes #331958.
14902
14903 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14904
14905         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14906         ARM to the new style trampoline.
14907
14908 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14909
14910         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14911
14912         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14913
14914 2007-10-09  Martin Baulig  <martin@ximian.com>
14915
14916         * debug-debugger.h
14917         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14918         `field_info_offset_offset'.     
14919
14920 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14921
14922         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14923         removed more internal usage of the r11 register and made it available
14924         to the register allocator.
14925
14926 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14927
14928         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14929         when sharing generics and treat type variables as references.
14930
14931 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14932
14933         * mini-ppc.c: started removing the internal uses of register r11
14934         to eventually allow the register allocator to manage it as an
14935         additional available register.
14936
14937 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14938
14939         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14940
14941 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14942
14943         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14944         specific trampolines as they are not performance critical as a jump
14945         target (maybe align as before only for AOT code?). This saves about
14946         200 KB of native code on x86 for monodevelop startup.
14947
14948 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14949
14950         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14951         monodevelop startup.
14952
14953 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14954
14955         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14956
14957         * mini-sparc.h mini-sparc.c: Implement IMT support.
14958
14959         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14960         its smaller and doesn't clobber sparc_g1.
14961
14962         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14963
14964 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14965
14966         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14967
14968 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14969
14970         * mini-ppc.c: implemented fast delegate invocation.
14971
14972 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14973
14974         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14975
14976 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14977
14978         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14979         code to the new style trampoline in preparation for IMT support.
14980
14981 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14982
14983         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14984         systems already. This also reduces the specific trampiline sizes and
14985         prepares for the use of r12 as the IMT identifier register.
14986
14987 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14988
14989         * mini-mips.h: endianess fix (simplified from a patch by
14990         Thomas Kunze <thommy@tabao.de>, bug #323737).
14991
14992 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14993
14994         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14995         to access ucontext fields and enable netbsd support
14996         (partially from Magnus Henoch <mange@freemail.hu>).
14997
14998 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14999
15000         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
15001         use the preprocessor from the CPP env var if it is set.
15002
15003 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15004
15005         * mini-trampolines.c: fixed an assertion and moved it earlier in the
15006         code, before interface_offset gets used.
15007
15008 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
15009
15010         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
15011         mono_class_setup_vtable () before accessing klass->vtable.
15012
15013 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
15014
15015         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
15016         hackish.
15017
15018 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
15019
15020         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
15021         IMT slots (this saves hundreds of KB of memory in programs like
15022         IronPython and Monodevelop).
15023
15024 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15025
15026         * mini.c: print the delegate counter.
15027
15028 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
15029
15030         * mini-x86.c: make it easier to enable the debugging code for IMT
15031         slots.
15032
15033 2007-09-28  Martin Baulig  <martin@ximian.com>
15034
15035         * debug-debugger.h
15036         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
15037         `mono_method_klass_offset' and `mono_method_token_offset'.
15038
15039 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15040
15041         * mini.c: First generics sharing implementation.  Can only share
15042         in very simple cases.  If sharing doesn't work it falls back to
15043         dedicated compilation.
15044
15045         * mini.h: Flag in MonoCompile to specify whether generic
15046         compilation is shared.  Flags enum for marking which generic inst
15047         of a context is used.  Prototypes for helper functions.
15048
15049         * generic-sharing.c: Helper functions for generic method sharing.
15050
15051         * optflags-def.h: Optimization flag (gshared) for enabling generic
15052         method sharing added.
15053
15054         * Makefile.am: generic-sharing.c added.
15055
15056 2007-09-19 Daniel Nauck <dna@mono-project.de>
15057
15058         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
15059
15060 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
15061         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
15062         fixes bug 325507.
15063
15064 2007-09-19  Martin Baulig  <martin@ximian.com>
15065
15066         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
15067         mono_debug_cleanup() is now part of mono_cleanup().
15068
15069 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15070
15071         * driver.c (mono_main): Fix a warning.
15072
15073 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15074
15075         * aot-compiler.c: Optimize various parts when processing large assemblies.
15076         Fixes ##325568.
15077
15078         * mini.c (mono_patch_info_hash): Improve hash function.
15079
15080 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15081
15082         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
15083         
15084         Code is contributed under MIT/X11 license.
15085
15086 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15087
15088         * mini.c (mini_init): Fix a leak.
15089
15090         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
15091
15092 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15093
15094         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
15095
15096 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15097
15098         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
15099
15100 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15101
15102         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
15103         variance tests.
15104
15105         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
15106
15107         * mini.c (handle_alloc): Enable managed allocators in AOT code.
15108
15109         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
15110
15111         * aot-runtime.c (decode_patch_info): Ditto.
15112
15113 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15114
15115         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
15116         static case. Cache delegates in architecture specific code, 
15117         based on number of parameters.
15118         
15119         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
15120         in architecture specific code, based on number of parameters.
15121         
15122         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
15123         caching happen in architecture specific code now.
15124         
15125         Code is contributed under MIT/X11 license.
15126
15127 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15128
15129         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
15130         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
15131         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
15132
15133         Code is contributed under MIT/X11 license.
15134
15135 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15136         * mini.c: (mono_thread_abort) Fixed bug #82416.
15137
15138 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15139
15140         * mini.: hook the new managed GC allocation feature into the JIT.
15141
15142 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15143
15144         * mini.c: implementation for the new runtime tls opcode.
15145
15146 2007-09-11  Martin Baulig  <martin@ximian.com>
15147
15148         * debug-debugger.h
15149         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
15150         `mono_method_inflated_offset'.
15151
15152 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
15153
15154         * driver.c mini.h mini.c: Add a new devel command line option for injecting
15155         async exceptions into a method.
15156
15157         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
15158         purpose of testing whenever the unwinder works at every instruction.
15159
15160 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
15161
15162         * mini.c: check accessibility of method used in ldftn (fixes
15163         bug #82635).
15164
15165 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
15166
15167         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
15168
15169         * inssel.brg: Fix a warning.
15170
15171 2007-09-03  Martin Baulig  <martin@ximian.com>
15172
15173         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
15174         now takes the `main_method' as argument.
15175
15176 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
15177
15178         * cpu-sparc.md (endfilter): Add missing src1:i argument.
15179
15180 2007-08-30  Jonathan Chambers <joncham@gmail.com>
15181
15182         * driver.c: include the cil-coff.h header on Windows.
15183         
15184         Code is contributed under MIT/X11 license.
15185
15186 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15187
15188         * mini.c, driver.c: don't include the cil-coff.h header.
15189
15190 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15191
15192         * mini.c: flag places that needs fixes fo soft-float support.
15193
15194 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
15195
15196         * mini.h, inssel-float.brg: fix soft-float constant loads on big
15197         endian systems (partially from Dean Jenkins, bug #81924).
15198
15199 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15200
15201         * mini.c (check_linkdemand): Remove embedded reference object in
15202         call to LinkDemandSecurityException.
15203         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
15204         with an IntPtr instead of a reference object.
15205
15206 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15207
15208         * mini.c (handle_initobj): Handle alignment properly.
15209
15210         * inssel.brg (mini_emit_memset): Ditto. 
15211
15212         * inssel.brg (mini_emit_memcpy): Ditto. 
15213
15214         * inssel-sparc.brg: Ditto.              
15215
15216         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
15217
15218 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
15219
15220         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15221         exceptions raised in unmanaged code. Fixes part of #82594.
15222
15223 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15224
15225         * mini.c (mono_method_to_ir), declsec.c
15226         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15227
15228 2007-08-22  Martin Baulig  <martin@ximian.com>
15229
15230         * debug-mini.h
15231         (MonoDebuggerThreadInfo): New typedef.
15232         (mono_debugger_thread_table): New global variable.
15233         (mono_debugger_thread_created): New public function.
15234         (mono_debugger_thread_cleanup): New public function.
15235
15236         * debug-debugger.h
15237         (MonoDebuggerInfo):
15238         - removed `get_current_thread' and `lookup_assembly'.
15239         - removed `data_table'.
15240         - added `thread_table'.
15241
15242         * mini.c
15243         (mono_thread_start_cb): Call mono_debugger_thread_created().
15244         (mono_thread_attach_cb): Likewise.
15245         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15246         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15247         initial domain.
15248
15249         * driver.c (mono_main): Move mono_debug_init() up, before calling
15250         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15251
15252 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15253
15254         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15255         together when passing several arguments of type double (gives a small
15256         speedup and saves a few bytes of generated code).
15257
15258 2007-08-20  Jb Evain  <jbevain@novell.com>
15259
15260         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15261
15262 2007-08-20  Jb Evain  <jbevain@novell.com>
15263
15264         * mini.c (mono_method_to_ir): throw MethodAccessException
15265         and FieldAccessException instead of InvalidProgramException.
15266
15267 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15268
15269         * mini.c: CoreCLR security checks.
15270
15271         * mini.h: Removed MonoSecurityMode (moved to
15272         metadata/security-manager.h) and mono_security_mode global var
15273         (replaced by set/get functions in security-manager.h).
15274
15275         * driver.c: Added "core-clr-test" security mode for testing.  Used
15276         set-function for setting security mode.
15277
15278 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15279
15280         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15281         the new jit_info_table.
15282
15283         * driver.c: Test code for the new jit_info_table (enabled by the
15284         define MONO_JIT_INFO_TABLE_TEST).
15285
15286 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15287
15288         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15289         detection of call <REG> instruction sequence. Fixes build on freebsd.
15290
15291 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15292
15293         * mini-exceptions.c: Fix a warning.
15294
15295 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15296
15297         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15298         stack overflow handling code on amd64 too.
15299
15300         * mini-exceptions.c (mono_setup_altstack): Make this use 
15301         mono_thread_get_stack_bounds ().
15302
15303         * mini-x86.h: Disable sigaltstack on solaris x86.
15304
15305 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15306
15307         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15308
15309 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15310
15311         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15312
15313 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15314
15315         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15316
15317         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15318
15319 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15320
15321         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15322         due to alignment.
15323
15324 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15325
15326         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15327         to be emitted (bug #82281).
15328
15329 2007-08-01  Martin Baulig  <martin@ximian.com>
15330
15331         Merged the `debugger-dublin' branch.
15332
15333         * debug-debugger.h (MonoDebuggerInfo):
15334         Removed the `old_*' compatibility entries.
15335         Added `debugger_version' and `data_table'.
15336         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15337         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15338
15339         * debug-mini.c
15340         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15341         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15342         instead of a `gconstpointer'.
15343         (mono_debugger_insert_method_breakpoint): Return a
15344         `MonoDebugMethodAddressList *'.
15345
15346 2007-06-28  Martin Baulig  <martin@ximian.com>
15347
15348         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15349
15350 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15351
15352         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15353         __builtin_frame_address () since it is broken on older gcc versions.
15354
15355 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15356
15357         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15358         on the stack overflow handling and made the managed stack overflows
15359         catchable in most cases using soft guard pages.
15360         * exceptions-x86.c: added code to restore the protection in the soft
15361         guard pages at the end of exception handling.
15362
15363 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15364
15365         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15366
15367 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15368
15369         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15370         exception handling.
15371
15372 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15373
15374         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15375         signal handling support until it has been ported to the new mechanism.
15376         * mini.c: fixed stack overflow detection and use the new
15377         architecture code  to handle signals on the altstack.
15378
15379 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15380
15381         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15382         stack overflows on the alt stack.
15383
15384 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15385
15386         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15387         stack overflows on the alt stack.
15388
15389 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15390
15391         * exceptions-ppc.c: cleanup preparing for altstack support.
15392
15393 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15394
15395         * exceptions-arm.c: cleanup preparing for altstack support.
15396
15397 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15398
15399         * mini.c (print_jit_stats): Output hazard pointer stats.
15400
15401 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15402
15403         * driver.c, mini.c: Replaced security mode flags with a single
15404         enum variable.
15405
15406 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15407
15408         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15409
15410 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15411
15412         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15413         (which doesn't do anything yet) for activating Core CLR
15414         (Silverlight) security.
15415
15416 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15417
15418         * mini-codegen.c: work around a possible gcc bug on arm.
15419
15420 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15421
15422         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15423         message for platforms that don't support AOT compilation.
15424
15425 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15426
15427         * mini.h, mini.c, driver.c: temporary smcs hack.
15428
15429 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15430
15431         * mini-arm.h, mini-arm.c: arm EABI fixes.
15432
15433 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15434
15435         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15436         case.
15437
15438         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15439         trampolines taking a method argument.
15440
15441         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15442
15443         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15444         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15445
15446         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15447         JIT compilation throws an exception. Fixes #82050.
15448
15449 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15450
15451         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15452         with the MONO_EXCEPTION_ defines.
15453
15454 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15455
15456         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15457         #82117.
15458         
15459         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15460         the cause of an assertion.
15461
15462 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15463
15464         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15465         removed.
15466
15467 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15468
15469         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15470         assert. Should fix #82103.
15471
15472 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15473
15474         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15475         here too. Fixes #82095.
15476
15477         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15478         addresses.
15479
15480         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15481
15482         * mini-amd64.h: Enable IMT for amd64.
15483         
15484         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15485
15486 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15487
15488         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15489
15490 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15491
15492         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15493         as soon as check_linkdemand sets an exception_type.
15494
15495 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15496
15497         * mini-x86.c: fixed offsets for IMT call sequence.
15498         * mini-x86.h: enable IMT again.
15499
15500 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15501
15502         * trace.c (mono_trace_enter_method): Decode MonoType too.
15503
15504         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15505
15506         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15507
15508         * mini-amd64.c: Add preliminary IMT implementation.
15509         
15510 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15511
15512         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15513         understand the new IMT-base interface invocation (thanks to
15514         Daniel Nauck for the report and the remote debugging session).
15515
15516 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15517
15518         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15519
15520 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15521
15522         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15523
15524 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15525
15526         * mini-trampolines.c: implement AOT IMT support.
15527         * mini-x86.h: enable IMT support for wider testing.
15528
15529 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15530
15531         * inssel.brg (emit_imt_argument): Add aot support here.
15532
15533         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15534
15535 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15536
15537         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15538         of the IMT implementation, partially from massi, with my
15539         implementation of the bsearch sequence. Disabled by default until
15540         the AOT code is implemented.
15541
15542 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15543
15544         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15545
15546         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15547
15548 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15549
15550         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15551         arch-independent IMT JIT code from Massimiliano
15552         Mantione (massi@ximian.com) with small cleanups from me.
15553
15554 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15555
15556         * Makefile.am: fix svn invocation to get the svn revision to be
15557         independent of the local language (build fix).
15558
15559 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15560
15561         * mini.c (inline_method): Reset cfg->exception_type if the
15562         inlining is aborted.  Fixes: 82049.
15563
15564 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15565
15566         * mini.c: remove assert from exception handling code when exception_ptr
15567         is not set.
15568
15569 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15570
15571         * mini.c (mono_codegen): Add an assert.
15572
15573         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15574         enter and leave code.
15575         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15576
15577 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15578
15579         * mini-ppc.c: fixed memory corruption for localloc(0)
15580         (bug #81852).
15581
15582 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15583         
15584         * mini.c: Fix warnings.
15585
15586 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15587
15588         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15589         to emit better double->int conversions.
15590
15591 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15592
15593         * mini.c: the provided Min/Max optimizations are valid for unisgned
15594         ints.
15595
15596 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15597
15598         * 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
15599
15600 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15601
15602         * mini.c (mono_running_on_valgrind): Add support for reporting the
15603         method and  its boundaries to valgrind.
15604
15605 2007-06-28  Martin Baulig  <martin@ximian.com>
15606
15607         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15608
15609 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15610
15611         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15612
15613         * generic.2.cs: Add new test case.
15614
15615 2007-06-25  Martin Baulig  <martin@ximian.com>
15616
15617         Merged the `debugger-dublin' branch.
15618
15619         * debug-mini.c
15620         (mono_debugger_insert_method_breakpoint): New public method.
15621         (mono_debugger_remove_method_breakpoint): Likewise.
15622         (mono_debugger_check_breakpoints): New static method.
15623         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15624
15625         * debug-debugger.h (MonoDebuggerInfo):
15626         Renamed (to keep backward compatibility in the vtable):
15627         `insert_breakpoint' -> `old_insert_breakpoint'.
15628         `remove_breakpoint' -> `old_remove_breakpoint'.
15629         `create_string' -> `old_create_string'.
15630         `lookup_class' -> `old_lookup_class'.
15631         `lookup_type' -> removed; changed into a dummy field.
15632         `lookup_assembly' -> `old_lookup_assembly'.
15633         Added (same functionality, but different signature):
15634         `create_string', `lookup_class', `lookup_assembly'
15635         Added new:
15636         `get_method_addr_or_bpt', `remove_method_breakpoint',
15637         `runtime_class_init'.
15638
15639         * debug-debugger.c: Merged the `debugger-dublin' branch.
15640
15641 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15642
15643         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15644         well.
15645         (peephole_pass): Likewise.
15646
15647 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15648
15649         * driver.c: hopefully make setaffinity work also for ancient
15650         versions of linux.
15651
15652 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15653
15654         * driver.c : win32 build fix.
15655
15656 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15657
15658         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15659         processor if it is set.
15660
15661 2007-06-21  Martin Baulig  <martin@ximian.com>
15662
15663         * debug-mini.h: New file.
15664
15665         * debug-mini.c
15666         (mono_debugger_insert_breakpoint_full): Moved here from
15667         ../metadata/mono-debug-debugger.c.
15668         (mono_debugger_remove_breakpoint): Likewise.
15669         (mono_debugger_breakpoint_callback): Likewise.
15670
15671 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15672
15673         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15674         changes in MonoGenericClass.
15675
15676 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15677
15678         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15679
15680 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15681
15682         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15683         removal of MonoGenericMethod.
15684
15685 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15686
15687         * mini-exceptions.c: hooks for the exception events profiling API.
15688
15689 2007-06-14  Randolph Chung  <tausq@debian.org>
15690
15691         * Makefile.ma: Add hppa target.
15692         * mini-arch.h: Include mini-hppa.h
15693         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15694         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15695         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15696
15697 2007-06-14  Randolph Chung  <tausq@debian.org>
15698
15699         * inssel.brg: Add rules for "chained" compare-branch operations so that
15700         a single compare op can affect multiple branches.  Adjust cost for
15701         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15702         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15703         cost for some rules so that they can more easily be overridden by
15704         per-arch rules (with fixes from lupus).
15705         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15706
15707 2007-06-13  Randolph Chung  <tausq@debian.org>
15708
15709         * mini-ops.h: Reorder branch ops so that they match the order of the
15710         corresponding CEE_* ops.  The code expects them this way.
15711         Add new ops for HPPA target.
15712         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15713
15714 2007-06-13  Randolph Chung  <tausq@debian.org>
15715
15716         * mini-exceptions.c: Handle cases where the stack grows towards
15717         larger addresses.
15718         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15719
15720 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15721
15722         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15723         counter.
15724         * driver.c: explain where a non-matching corlib is found.
15725
15726 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15727
15728         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15729
15730 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15731
15732         * mini-exceptions.c: Generate a method profile leave event during
15733         an exception to ensure that the profiler gets notified.
15734
15735 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15736
15737         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15738         branch.
15739
15740         * cpu-amd64.md: Add long_and/or/xor opcodes.
15741
15742 2007-06-06  Wade Berrier  <wberrier@novell.com>
15743
15744         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15745         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15746         length of instruction shr_imm (expected 8, got 10)
15747
15748 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15749
15750         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15751
15752 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15753
15754         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15755         MonoInternalHashTable again (fixed bug in the internal hash table
15756         code).
15757
15758 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15759
15760         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15761         Have to figure out what makes it crash the SWF regression.
15762
15763 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15764
15765         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15766
15767 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15768
15769         * mini.c: optimize out the type check when storing null in a
15770         reference array.
15771
15772 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15773
15774         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15775         MonoInternalHashTable.
15776
15777 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15778
15779         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15780         signed integer methods.
15781
15782 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15783
15784         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15785         permanently since the current approach doesn't work.
15786
15787 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15788
15789         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15790         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15791
15792 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15793
15794         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15795         the sreg2==rdx case.
15796         
15797         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15798         account if it contains a rex prefix.
15799         (peephole_pass): Handle OP_FMOVE as well.
15800
15801 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15802
15803         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15804         as it causes regressions.
15805
15806 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15807
15808         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15809         static case as well.
15810
15811         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15812
15813         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15814         (mono_arch_get_this_arg_from_call): Ditto.
15815
15816         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15817
15818         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15819         invoke_impl field.
15820
15821         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15822         (mono_arch_get_this_arg_from_call): Ditto.
15823
15824         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15825         
15826         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15827         try to create optimized invoke code and use that for further invocations. 
15828         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15829
15830         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15831
15832 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15833
15834         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15835         sealed classes or methods.
15836         *devirtualization.cs: tests for the new optimization
15837
15838 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15839
15840         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15841         by the update_volatile () function.
15842
15843 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15844
15845         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15846         require it.
15847
15848         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15849
15850 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15851
15852         * mini.c: Add configure checks for header files.
15853         * mini-x86.c: Add configure checks for header files.
15854         * trace.c: Add configure checks for header files.
15855         * aot-runtime.c: Add configure checks for header files.
15856         * aot-compiler.c: Add configure checks for header files.
15857         * driver.c: Add configure checks for header files.
15858         * mini-codegen.c: Add configure checks for header files.
15859         
15860         Code is contributed under MIT/X11 license.
15861
15862 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15863
15864         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15865         icompare_imm -128 + op_iclt. Fixes #81703.
15866
15867 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15868
15869         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15870
15871 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15872
15873         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15874         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15875         so that all isinst checks now use "interface_bitmap".
15876
15877 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15878
15879         * cpu-amd64.md (jmp): Fix a warning.
15880
15881         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15882
15883         * basic.cs: Add new regression test.
15884
15885         * basic.cs: Remove test which is now in basic-long.cs.
15886
15887         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15888
15889         * basic-long.cs: Add new test.
15890         
15891 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15892
15893         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15894
15895 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15896
15897         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15898
15899         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15900         places.
15901         
15902         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15903         throwing code a bit.
15904
15905         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15906         the exception throwing code a bit.
15907
15908         * mini-x86.c (get_call_info): Allocate result from a mempool.
15909
15910 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15911
15912         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15913
15914         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15915
15916         * mini.h (MonoCompile): Add 'token_info_hash' field.
15917
15918         * mini.c: Save token->method associations during compilation so the AOT 
15919         compiler can use it.
15920         
15921         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15922         which reference generic classes and methods.
15923
15924 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15925
15926         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15927
15928         * aot-compiler.c (compile_method): Fix a typo in a comment.
15929
15930         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15931
15932         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15933         everything generic.
15934
15935         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15936
15937 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15938
15939         * mini.h (MonoCompile): Add 'args' field.
15940
15941         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15942         into cfg->args.
15943
15944         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15945
15946 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15947
15948         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15949
15950         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15951
15952         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15953         opcodes for some opcodes.
15954
15955         * mini.h *.brg *.c: Use the new opcodes.
15956
15957 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15958
15959         * mini.h: Bumped aot revision.
15960
15961         * inssel.brg: modified code generation of type checks for interfaces
15962         to use the new "MonoClass.interface_bitmap" instead of the old
15963         "MonoClass.interface_offsets".
15964
15965 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15966
15967         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15968
15969 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15970
15971         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15972         64 bit platforms.
15973
15974 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15975
15976         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15977
15978 2007-04-27  Wade Berrier  <wberrier@novell.com>
15979
15980         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15981         mini.h) to fix build.
15982
15983 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15984
15985         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15986         
15987         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15988         causes the corlib unit tests to fail.
15989
15990 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15991
15992         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15993
15994         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15995
15996         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15997         opcodes to the comparison relations.
15998
15999         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
16000         opcodes to their types.
16001         
16002         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
16003
16004         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
16005         it in cfg->arch.cinfo.
16006
16007         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
16008
16009         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
16010         cfg->cil_offset_to_bb.
16011
16012 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
16013
16014         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
16015         created becase of initlocals.
16016
16017 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
16018
16019         * mini-alpha.c cpu-alpha.md: More alpha port work from 
16020         Sergey Tikhonov <tsv@solvo.ru>.
16021
16022 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
16023
16024         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
16025
16026 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
16027
16028         * cpu-s390.md (break): Correct the length of break instruction.
16029
16030 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
16031
16032         * mini.c: fix a couple of soft-float issues and comments.
16033
16034 2007-04-15  Miguel de Icaza  <miguel@novell.com>
16035
16036         * trace.c (is_filenamechar): - is also a filename char.
16037
16038 2007-04-15  Neale Ferguson <neale@sinenomine.net>
16039
16040         * mini-s390.c: Correct checking for enum type in return value processing.
16041
16042 2007-04-14  Raja R Harinath  <rharinath@novell.com>
16043
16044         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
16045         (version.h): Makefile is in the build directory.
16046
16047 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
16048
16049         * mini-amd64.h: fix for assertion failure on Solaris/amd64
16050
16051 2007-04-11  Martin Baulig  <martin@ximian.com>
16052
16053         * mini.c (can_access_member): Fix handling of generic classes;
16054         fixes #81259.
16055
16056 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
16057
16058         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
16059
16060 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
16061
16062         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
16063
16064 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16065
16066         * mini-codegen.c: make sure the right spill amount is
16067         used for fp or integer registers (fixes the float_sub_spill() on ppc).
16068
16069 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
16070
16071         * mini-ppc.c: fixes for the fp_branch_nan test.
16072
16073 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
16074
16075         * basic.cs: Comment out new test which still fails on ia64.
16076
16077 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
16078
16079         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
16080
16081 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16082
16083         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
16084
16085 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
16086
16087         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
16088         on 64 bit machines. Fixes part of #80738.
16089
16090         * basic.cs: Add regression test.
16091
16092 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
16093
16094         * inssel.brg basic.cs: Revert previous change to fix build.
16095
16096         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
16097         platforms.
16098         
16099         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
16100
16101         * basic.cs: Add new regression test.
16102
16103 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
16104
16105         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
16106         many arguments.
16107
16108 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16109
16110         * cpu-s390x.md: Correct length of break instruction.
16111
16112 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16113
16114         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
16115         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
16116
16117 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
16118
16119         * *.c: Begin WIN64 port.
16120         * mini.c:  Use correct register in profiler.
16121         * mini-amd64.c: No inline assembly on Win64.
16122         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
16123         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
16124         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
16125         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
16126         mono_arch_ip_from_context for Win64.
16127         
16128         Contributed under MIT/X11 license.
16129
16130 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
16131
16132         * exceptions-amd64.c (seh_handler): Ditto.
16133
16134         * exceptions-x86.c (seh_handler): Fix a memory leak.
16135
16136 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
16137
16138         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
16139         mini-s390x.c: fixed peephole optimizations to deal
16140         correctly with 1 and 2 byte reload avoidance.
16141
16142 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
16143
16144         * cpu-s390.md, cpu-s390x.md: update localloc length.
16145
16146 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16147
16148         * cpu-g4.md: added missing descriptions.
16149
16150 2007-03-14  Miguel de Icaza  <miguel@novell.com>
16151
16152         *  Makefile.am: Add support so the tail tests are not executed on
16153         PowerPC as that is a known limitation of the PowerPC port.
16154
16155 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16156
16157         * runmdesc.bat:  Move to msvc directory.
16158         
16159 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16160
16161         * runmdesc.bat:  Run executable that was produced by the current
16162         target and sent via an argument.
16163         
16164 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
16165
16166         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
16167         #81102.
16168
16169         * generics.2.cs: Add regression test.
16170
16171 2007-03-09  Wade berrier  <wberrier@novell.com>
16172
16173         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
16174
16175 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
16176
16177         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
16178         AOT code depends on this.
16179
16180 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16181
16182         * mini.c: more precise tracking of types in the eval stack
16183         (part of fix for bug #81044).
16184
16185 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
16186
16187         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
16188
16189         * aot-compiler.c (encode_patch): Remove an obsolete comment.
16190
16191 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16192
16193         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
16194
16195         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
16196
16197 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
16198
16199         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
16200         a pointer on 64 bit systems. Fixes #80190.
16201
16202         * iltests.il: Add new regression test.
16203
16204 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16205
16206         * mini.c: inline a constant for Environment.IsRunningOnWindows.
16207
16208 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
16209
16210         * trace.c: Remove an erroneous alignemnt check when tracing.
16211           Fixes --trace on OSX86.
16212
16213 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16214
16215         * mini-$(arch).h: initialize SP in context for all the archs.
16216
16217 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
16218
16219         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16220         regressions in the thread tests.
16221
16222 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16223
16224         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16225         - fixed implementation of LOCALLOC opcode
16226         - implemented non-un compare for floats
16227         - code cleanup
16228         - implementation of FDIV and CKFINITE opcodes
16229         - fixes for latest mono updates
16230         - additional arch opcodes
16231
16232 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16233
16234         * Makefile.am: simplify and merge rules for cross-compilation.
16235
16236 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16237
16238         * local-propagation.c: Actually *apply* the fix for bug 80591...
16239
16240 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16241
16242         * mini-exceptions.c: backuot part of the last change
16243         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16244
16245 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16246         * inssel.brg: Fix bug 59286.
16247
16248
16249 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16250
16251         * mini-exceptions.c: patch from Zoltan to correctly check for
16252         stack boundaries (using the stack register, not the frame register),
16253         fixes bugs #80724, #79717.
16254
16255 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16256
16257         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16258         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16259
16260         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16261         presence of frame pointer elimination.
16262
16263 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16264         
16265         * mini-x86.h: NetBSD UCONTEX_REG defines.
16266
16267 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16268
16269         * inssel-amd64.brg: Fix amd64 build.
16270
16271 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16272
16273         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16274         on amd64.
16275
16276 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16277
16278         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16279         ends.
16280
16281         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16282
16283 2007-01-30 Mark Mason <mason@broadcom.com>
16284
16285            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16286            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16287            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16288            beginning support for CEE_JMP [not quite working yet]
16289            * tramp-mips.c: LMF handling now works
16290         
16291 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16292
16293         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16294
16295         * mini.h (NULLIFY_INS): New macro.
16296
16297 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16298
16299         * mini.c: statistical profiler fix for windows, patch
16300         from Tor Lillqvist (tml@novell.com).
16301
16302 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16303         * local-propagation.c: Fix bug 80591.
16304
16305 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16306
16307         * Makefile.am: put back the --export-dynamic option as with
16308         the previous gmodule flags (thanks to Robert Jordan).
16309
16310 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16311
16312         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16313
16314         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16315         simplify and speed up the local register allocator. Also rename some fields
16316         like iassign->vassign.
16317         
16318         * regalloc.c: Remove some functions which are no longer used since their
16319         inlined version is in mini-codegen.c.
16320         
16321         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16322
16323         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16324
16325 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16326
16327         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16328         narrowing. Fixes #80622.
16329
16330         * iltests.il: Add new regresssion test. 
16331
16332 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16333
16334         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16335         debug-debugger.c, debug-debugger.h: warning fixes.
16336         * driver.c: updated copyright year and made it fit in one line.
16337
16338 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16339
16340         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16341
16342 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16343
16344         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16345
16346         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16347
16348         * iltests.il: Add new test for bug #80507.
16349
16350 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16351
16352         * mini-arm.h: use soft-float also on vfp for now.
16353
16354 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16355
16356         * mini.c: fix some more soft-float issues.
16357
16358 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16359
16360         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16361
16362 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16363         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16364         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16365         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16366
16367 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16368
16369         * mini-arm.c: typo fix.
16370
16371 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16372
16373         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16374
16375 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16376
16377         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16378         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16379
16380         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16381
16382         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16383
16384         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16385         
16386         * inssel.brg: Fix a warning.
16387
16388         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16389
16390         * abcremoval.c ssa.c ssapre.c: Update after this change.
16391         
16392         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16393
16394         * dominators.c (df_set): Use mono_bitset_union_fast.    
16395
16396 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16397
16398         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16399         mini-codegen.c: reduce relocations and memory usage for the cpu
16400         description.
16401
16402 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16403
16404         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16405
16406         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16407         to reduce their size.
16408
16409 2007-01-19 Mark Mason <mason@broadcom.com>
16410
16411         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16412         * mini-mips.c: more configuration macros, support long conditional branches, additional
16413         asserts, fix epilog instrumentation.
16414         * mini-mips.h: use standard stack walk
16415         * cpu-mips.md: increase size of div, rem and conditional branches
16416         
16417 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16418
16419         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16420         to cpu spec data.
16421
16422 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16423
16424         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16425         (compile_method): Ditto.
16426
16427         * aot-runtime.c (decode_klass_info): Ditto.
16428
16429         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16430         needed by the code generated by inssel.brg. Also fix a warning.
16431
16432 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16433
16434         * mini.c: deal with enums that become genericinsts by
16435         being nested in a generic class (bug #79956).
16436
16437 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16438
16439         * mini.c: match the generic definition to check for
16440         private access with generic types (bug #78431).
16441
16442 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16443
16444         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16445         to make life easier for people cross-compiling that insist on not
16446         using scratchbox.
16447
16448 2007-01-17 Mark Mason <mason@broadcom.com>
16449
16450         * inssel-long.brg: patch to deal with mips missing flags
16451         * inssel-long32-mips.brg: implement overflow checks
16452         * insset-mips.brg: implement overflow checks
16453         * mini-mips.h: implement conditional exception handling
16454         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16455           Remove unused code, minor cleanups.
16456         * exceptions-mips.c: minor cleanups
16457         * mini-ops.h: add mips conditional exception ops
16458         * cpu-mips.md: add mips conditional exception ops
16459
16460         
16461 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16462
16463         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16464         to deal with mips missing of flags.
16465
16466 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16467
16468         * exceptions-ppc.c: execute fault handlers.
16469
16470 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16471
16472         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16473
16474 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16475
16476         * mini.c: handle also floating point values in initialize_array.
16477
16478 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16479
16480         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16481         array initialization and make it conditional on the intrins option.
16482
16483 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16484
16485         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16486         relocations and put the patch info names close to the enum definition.
16487
16488 2007-01-15 Mark Mason <mason@broadcom.com>
16489
16490         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16491
16492 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16493
16494         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16495
16496 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16497
16498         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16499
16500 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16501
16502         * Makefile.am: distribute the mips sources.
16503
16504 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16505
16506         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16507         directly.
16508
16509 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16510
16511         * cpu-x86.md: back out for now as this triggers other regressions.
16512
16513 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16514
16515         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16516         to eax:edx, so ecx can't get allocated to them (bug #80489).
16517
16518 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16519
16520         * mini.c, mini-exceptions.c: enabled running fault handlers
16521         (bug #80469).
16522
16523 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16524
16525         * driver.c: If nothing fail, do not use the string "failed",
16526         because it makes it very annoying to view test result logs on the
16527         web. 
16528
16529 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16530
16531         * debug-debugger.c (mono_debugger_main): Rename "main" to
16532         "main_method" to prevent a warning.
16533
16534         Remove a warning for unused field.
16535
16536 2006-12-28  Martin Baulig  <martin@ximian.com>
16537
16538         * debug-debugger.c
16539         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16540
16541 2006-12-22  Martin Baulig  <martin@ximian.com>
16542
16543         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16544         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16545         seperate `.mdb_debug_info' section, so we can access it from the
16546         debugger even if the binary is stripped.
16547
16548         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16549         from the `.mdb_debug_info' here to prevent the linker from
16550         removing that section.
16551
16552         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16553         mdb-debug-info64.s.
16554
16555 2006-12-19  Robert Jordan  <robertj@gmx.net>
16556
16557         * mini-x86: enable the code to return small structures in
16558         registers for FreeBSD as well. Fixes bug #80278.
16559         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16560
16561 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16562
16563         * mini-x86.c: align the stack when calling the profiler
16564         function instrumenting the prolog (on OSX).
16565
16566 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16567
16568         * mini.c: emit a break opcode where Debugger.Break () is called.
16569
16570 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16571
16572         * mini.c (mono_method_to_ir): Provide useful information on this
16573         assert, to prevent others from debugging like I did.
16574
16575 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16576
16577         * mini.c: enable code which was incorrectly commented
16578         (bug #80235).
16579
16580 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16581
16582         * mini-x86.c: enable on OSX, too, the code to return small
16583         structures in registers.
16584
16585 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16586
16587         * mini-x86.c: remove the use of the dynamic code manager here, too.
16588
16589 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16590
16591         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16592         mono_debugger_create_notification_function() to use
16593         mono_global_codeman_reserve () instead of a dynamic code manager.
16594
16595 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16596
16597         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16598         ves_array_element_address() jit icall and use a generated
16599         managed method instead (which is about 4 times faster for a rank 3
16600         array access).
16601
16602 2006-11-29  Mark Mason  <mason@broadcom.com>
16603
16604         * basic-calls.cs: additional tests for passing
16605         structures as function arguments.
16606
16607 2006-11-29  Mark Mason  <mason@broadcom.com>
16608
16609         * mini-mips.h: disable custom exception handling
16610         * mini-mips.c: throw/rethrow should use jalr to call
16611         exception stubs.  Fixed bug with passing structures
16612         by value. More support for tracing floating point
16613         functions.
16614
16615 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16616
16617         * mini.c: fixed typo in the soft-float ldind.r4 handling
16618         (bug #80086).
16619
16620 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16621
16622         * mini.c, mini.h, driver.c: added --runtime command line
16623         option to select a different runtime than the autodetected one.
16624         * jit.h: added API for embedders to initialize with a specific
16625         runtime version.
16626
16627 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16628
16629         * mini.c: handle also boxing of r4 values (bug #80024).
16630
16631 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16632
16633         * mini-ppc.c: force indirect calls until we reserve
16634         enough address space for all the generated code.
16635
16636 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16637
16638         * exceptions-arm.c: workaround bugs in the libc definition
16639         of struct ucontext.
16640
16641 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16642
16643         * inssel.brg: fixes from me and Mark Mason.
16644
16645 2006-11-23  Dick Porter  <dick@ximian.com>
16646
16647         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16648         semaphore display now we've fixed the initial value
16649
16650 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16651
16652         * inssel.brg: partially revert the last change to fix the build.
16653
16654 2006-11-21  Mark Mason  <mason@broadcom.com>
16655
16656         * inssel.brg: Add and use compare-and-branch macros to support
16657         architectures that do not have condition code registers (ie. MIPS).
16658         * *-mips.{c,brg,md}: Fix copyright statements
16659
16660 2006-11-20  Mark Mason  <mason@broadcom.com>
16661
16662         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16663         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16664         * mini.h: Added declaration for mono_print_ins()
16665         * mini-codegen.c: added ins_spec initializer for MIPS
16666         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16667         vreg to be virtual and hreg to be non-virtual.
16668         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16669         is not yet working/implemented correctly.
16670         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16671         non-static, fixup calls to print_ins() from other parts in the file.
16672
16673 2006-11-20  Mark Mason  <mason@broadcom.com>
16674
16675         * basic-calls.cs: added tests for passing structures as arguments
16676         to calls.
16677
16678 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16679
16680         * inssel-long32.brg: optimize signed division by power of two.
16681
16682 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16683
16684         * mini-arm.c: added support for interworking with thumb code
16685         (mono must be still be built using the ARM instruction encoding).
16686
16687 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16688
16689         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16690         verifier has different rules for it.   Fixes a few verifier issues
16691         in the test suite.
16692
16693         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16694         at the end, so people know what happened.
16695
16696 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16697
16698         * brach-opts.c: in optimize_exception_target() make sure we
16699         are in a catch clause (fixes bug #79871).
16700
16701 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16702
16703         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16704         more soft-float support fixes.
16705
16706 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16707
16708         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16709         that are passed half on the stack and half in registers.
16710
16711 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16712
16713         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16714         more mips integration work from Mark E Mason 
16715         <mark.e.mason@broadcom.com>.
16716
16717 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16718
16719         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16720         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16721         tramp-mips.c: added sources for the mips port, not
16722         integrated in the build yet. Contributed by
16723         Mark E Mason <mark.e.mason@broadcom.com>.
16724
16725 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16726
16727         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16728
16729 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16730
16731         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16732         put the soft-float rules in its own file since it seems to
16733         break s390 compilation.
16734
16735 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16736
16737         * mini-arm.c: fixed wrnings.
16738
16739 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16740
16741         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16742         inssel-arm.brg: ARM support for soft-float.
16743
16744 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16745
16746         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16747         loads and stores of 32 bit fp values.
16748
16749 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16750
16751         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16752
16753         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16754         works. Fixes #79852 and #79463.
16755
16756 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16757
16758         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16759         more soft-float support WIP and fixes.
16760
16761 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16762
16763         * mini-arm.c: some VFP updates.
16764
16765 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16766
16767         * mini-exceptions.c: 0 is a valid local var offset in some
16768         architectures, don't assert (bug #78508).
16769
16770 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16771
16772         * exceptions-arm.c: fixed off by one error in stack walk code.
16773
16774 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16775
16776         * mini.h, mini.c: more precise tracking of type load exceptions.
16777
16778 2006-11-03  Robert Jordan  <robertj@gmx.net>
16779
16780         * Makefile.am: [WIN32] Add monow.exe target.
16781         * driver.c: [WIN32] Don't detach the console when debugging.
16782         Fixes bug #79797.
16783         
16784 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16785
16786         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16787
16788 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16789
16790         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16791
16792         * driver.c (mini_regression): Fix --regression with AOT.
16793
16794         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16795
16796 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16797
16798         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16799
16800         * mini-sparc.h: Don't use sigaction on sparc/linux.
16801
16802         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16803
16804         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16805
16806         * mini-exceptions.c: Add proper include files for getpid ().
16807
16808 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16809
16810         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16811         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16812         method.
16813
16814         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16815         name cache to reduce its size.
16816
16817         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16818
16819 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16820
16821         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16822         the mono_lmf TLS variable.
16823
16824         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16825         trampoline lmf frames.  
16826
16827         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16828
16829 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16830
16831         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16832         the mono_lmf TLS variable.
16833
16834         * mini-exceptions.c: Access the LMF structure through accessors.
16835
16836         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16837         variable instead of in jit_tls->lmf.
16838
16839         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16840         
16841         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16842         trampoline lmf frames.
16843
16844         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16845
16846 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16847
16848        * mini.c trace.c mini-x86.c: Revert these too.
16849         
16850        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16851        signature change.
16852
16853 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16854
16855         * genmdesc.c: removed now dead code.
16856
16857 2006-10-09  Robert Jordan <robertj@gmx.net>
16858
16859         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16860
16861 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16862
16863         * mini.h: do not leave gaps in the opcode values.
16864
16865 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16866
16867         * jit-icalls.h: flag functions as internal here, too.
16868
16869 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16870
16871         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16872         functions with the internal attribute.
16873
16874 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16875
16876         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16877
16878 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16879
16880         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16881         for soft-float.
16882
16883 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16884
16885         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16886         tail calls as on other platforms.
16887
16888         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16889
16890         * iltests.il: Add a few tailcall tests.
16891
16892 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16893
16894         * driver.c: fix loop for old compilers (bug #79521).
16895
16896 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16897
16898         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16899
16900         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16901
16902         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16903         metadata without any code.
16904
16905         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16906         more precise debugging information using gdb.
16907
16908 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16909
16910         * inssel-ia64.brg: Make the helper methods static.
16911
16912 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16913
16914         * inssel-x86.brg: make the helper methods static.
16915
16916 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16917
16918         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16919
16920 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16921
16922         * mini.c: updates for monoburg changes.
16923         * inssel.brg: make a few helper functions static as they should.
16924
16925 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16926
16927         * Makefile.am: Move mini-codegen.c to common_sources.
16928
16929 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16930
16931         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16932         instructions.
16933         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16934         mini-ppc.h: port to use the common local register allocator.
16935
16936 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16937
16938         * mini.h: Remove the comment too then.
16939
16940 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16941
16942         * mini.h: put back backend.data which is to be used shortly and
16943         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16944         pointers on 4 byte boundaries it'd have much bigger issues running
16945         and you can ifdef it out anyway.
16946
16947 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16948
16949         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16950         MonoInst size by 4 bytes on 64 bit machines.
16951
16952 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16953
16954         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16955         replacement with more meaningful field names. Arch maintainers, please
16956         check the assigned names are good enough for your arch.
16957
16958 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16959
16960         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16961         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16962
16963 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16964
16965         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16966         relocations and memory requirements, put the optimization flags
16967         definitions in their own file.
16968
16969 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16970
16971         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16972
16973         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16974
16975 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16976
16977         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16978
16979 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16980
16981         * inssel.brg: use the correct function to get the size of an item
16982         in an array, given an element class.
16983         * aot-compiler.c: do not access class->class_size directly.
16984
16985 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16986
16987         * mini.h, debug-mini.c: added a debugging function to print
16988         info about local variables and arguments in a jitted method.
16989
16990 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16991
16992         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16993
16994         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16995
16996 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16997
16998         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16999         inner and outer loops when passing vtypes.
17000
17001 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
17002
17003         * mini-ppc.c: take into account the cpu errata for cache flushing
17004         which caused some random errors (bug #79381).
17005
17006 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
17007
17008         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
17009         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
17010
17011 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
17012
17013         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
17014         loaded.
17015
17016         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
17017         freebsd ports tree.
17018
17019         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
17020         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
17021
17022         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
17023         displacement.
17024
17025 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
17026
17027         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
17028
17029 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
17030
17031         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
17032         macro does not have to be changed during debugging.
17033
17034         * 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>.
17035
17036         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
17037
17038         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
17039         
17040         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
17041         MONO_ARCH_NO_EMULATE_MUL is defined.
17042
17043         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
17044
17045         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
17046
17047         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
17048
17049         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
17050         
17051 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
17052
17053         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
17054         stuff to mini-exceptions.c where it is used.
17055
17056         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
17057         setup code, the real one is in mini-exceptions.c.
17058
17059         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
17060         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
17061         some changes from the freebsd ports tree.
17062
17063         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
17064         constants.
17065         
17066         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
17067
17068 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
17069
17070         * mini.c: on Linux, check for /proc to be mounted
17071         (bug# 79351, novell bug#201204).
17072
17073 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
17074
17075         * mini.c: handle cases where pthread_attr_getstack() behaves
17076         incorrectly (bug #78096).
17077
17078 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
17079
17080         * mini-arm.c: support larger stack frames (bug #79272).
17081
17082 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
17083
17084         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
17085
17086         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
17087         tokens.
17088
17089         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
17090         mono_class_from_name () to find a class from its name.
17091
17092         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
17093
17094 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
17095
17096         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
17097
17098 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
17099
17100         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
17101
17102 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
17103
17104         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
17105         callinfo->trampoline.
17106
17107         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
17108         fixes #79271.
17109         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
17110         future.
17111
17112 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
17113
17114         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
17115
17116 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
17117
17118         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
17119         stats.method_trampolines, it is already done by the generic trampoline code.
17120
17121         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
17122         
17123 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
17124
17125         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
17126
17127         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
17128
17129         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
17130
17131         * mini.c (print_jit_stats): Print mscorlib mempool size too.
17132         
17133         * mini.c (print_jit_stats): Print new stats.
17134
17135         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
17136
17137 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
17138
17139         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
17140         Address on two dimensional arrays. Fixes #78729.
17141
17142         * mini.h (MonoCompile): Add a 'skip_visibility' field.
17143
17144         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
17145         a method.
17146
17147         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
17148
17149         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
17150         #79130.
17151         
17152         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
17153         a race condition.
17154         (mini_get_ldelema_ins): Ditto.
17155
17156 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
17157
17158         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
17159         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
17160         Fixes #79213.
17161
17162 2006-08-29 Neale Ferguson <neale@sinenomine.net>
17163
17164         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
17165         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
17166
17167         * exceptions-s390x.c: Cosmetic change.
17168
17169         * tramp-s390.c: Fix warning.
17170
17171         * cpu-s390.md: Correct length of mul_imm.
17172
17173 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
17174
17175         * aot-compiler.c: added binary writer with ELF backend
17176         implementation (only on Linux/x86 for now).
17177
17178 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17179
17180         * Makefile.am: Don't run net 2.0 AOT tests.
17181
17182         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
17183         (mono_compile_assembly): Skip net 2.0 assemblies as well.
17184
17185         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
17186
17187 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17188
17189         * aot-compiler.c: simplified and refactored the asm-writing code
17190         to allow different backends.
17191
17192 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17193
17194         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
17195
17196         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
17197         little. Share patches of type TYPE_FROM_HANDLE as well.
17198
17199         * mini.c (mono_patch_info_equal): New helper function.
17200         (mono_patch_info_hash): Ditto.
17201
17202         * aot-compiler.c (emit_method_code): Fix s390 build.
17203
17204         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
17205         is not handled because it is stored as a flag and not as a type ctor. Fixes
17206         #79016.
17207
17208 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
17209
17210         * aot-compiler.c: Fix computation of GOT slot statistics.
17211         
17212         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
17213         Also remove support for not PIC AOT.
17214
17215         * mini.h: Bump AOT file format version.
17216
17217         * objects.cs: Add a test for #78990.
17218
17219         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17220         (peter.dettman@iinet.net.au). Fixes #79087.
17221
17222         * basic-long.cs: Add a test for the above.
17223
17224 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17225
17226         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17227         
17228         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17229         code somewhat.
17230
17231 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17232
17233         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17234         exceptions.
17235
17236 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17237
17238         * mini.c: Don't verify COM proxy invoke calls
17239         
17240
17241 2006-08-10  Dick Porter  <dick@ximian.com>
17242
17243         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17244         which process is holding semaphores locked.
17245
17246 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17247
17248         * mini-ia64.c mini-amd64.c: Fix #79027.
17249
17250         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17251
17252         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17253
17254         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17255         implicit arguments in a vararg call. Fixes #79027.
17256
17257 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17258
17259         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17260         (mono_get_array_new_va_signature): Ditto.
17261
17262 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17263
17264         * aot-runtime.c: Call init_plt lazily.
17265
17266         * inssel-long.brg: Fix unsigned long->int conversion.
17267
17268         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17269
17270         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17271         that most data is now in the .rss/.data section.
17272
17273 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17274
17275         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17276
17277         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17278
17279         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17280
17281         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17282
17283         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17284         virtual call. Fixes #79010.
17285
17286         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17287         and use the result as the this argument in the real call.
17288
17289         * generics.2.cs: Add a new test for #79010.
17290         
17291 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17292
17293         * mini-x86.c: Fix a warning.
17294
17295         * aot-compiler.c: Add a bunch of statistics.
17296
17297         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17298
17299 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17300
17301         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17302
17303 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17304
17305         * 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>.
17306
17307 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17308
17309         * mini.c (mono_method_to_ir): Obtain the original method in the
17310         CIL stream and use this to perform validation.
17311
17312         Fixed: #78816
17313
17314 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17315
17316         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17317         (mono_arch_call_opcode): Ditto.
17318
17319         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17320         #78826.
17321
17322         * mini.c (mono_patch_info_dup_mp): New helper function.
17323         
17324         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17325         compilation. Fixes #78827.
17326
17327 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17328
17329         * declsec.c: Use original security informations for
17330           MONO_WRAPPER_MANAGED_TO_MANAGED.
17331
17332 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17333
17334         * mini.c: Allow Com Interop methods/classes and
17335         don't verify COM wrapper calls
17336         
17337
17338 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17339
17340         * inssel-long32.brg: Fix long->i4 checked conversion.
17341
17342         * exceptions.cs: Add a test for the above.
17343
17344 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17345
17346         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17347
17348         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17349         leaks.
17350
17351         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17352         #78775.
17353
17354 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17355
17356         * mini.c: Fix solaris/x86 exception handling.
17357
17358         * Makefile.am: Get rid of $(ICU_LIBS).
17359
17360 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17361
17362         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17363         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17364         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17365
17366         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17367
17368         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17369         this function causes a SIGSEGV.
17370
17371 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17372
17373         * mini.c: Remove unused solaris/x86 includes.
17374
17375 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17376
17377         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17378
17379 2006-06-20  Jb Evain  <jbevain@gmail.com>
17380
17381         * cpu-g4.md: fix max length of start_handler instruction.
17382
17383 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17384         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17385
17386 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17387         * ssa.c: Fixed bug 78653 for SSA based deadce.
17388         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17389         MonoInst.flags, used in SSA based deadce.
17390         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17391         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17392
17393 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17394
17395         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17396         it can end up using non executable memory on ppc64 systems
17397         running ppc32 userspace (fix from Johannes Berg).
17398
17399 2006-06-14  Dick Porter  <dick@ximian.com>
17400
17401         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17402         4.1.1
17403
17404 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17405         * mini.c: Made so that inline is locally disabled if it would
17406         trigger a .cctor, because too many apps depend on this behavior
17407         (which seems to be also the one of the MS CLR).
17408
17409 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17410
17411         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17412         No idea why this worked before.
17413
17414         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17415         which branch to outer exception clauses since they could skip the
17416         inner finally clauses. Fixes #78633.
17417
17418         * exceptions.cs: Add a test for the above.
17419
17420         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17421         Fixes #78629.
17422
17423         * iltests.il: Add a test for the above.
17424
17425 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17426
17427         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17428         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17429
17430         * iltests.il: Add a test for the above.
17431
17432 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17433
17434         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17435         
17436         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17437         methods as instrinsics.
17438
17439 2006-06-09  Wade Berrier <wberrier@novell.com>
17440
17441         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17442         (simple-cee-ops.h ssapre-mini-ops.h)
17443
17444 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17445
17446         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17447         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17448         instruction).
17449         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17450         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17451
17452 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17453
17454         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17455
17456 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17457
17458         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17459         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17460         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17461         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17462         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17463         of opcodes, so that bug 78549 should not happen again.
17464         * ssapre.c: Updated to use the renamed files.
17465
17466 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17467
17468         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17469         in OP_ATOMIC_EXCHANGE_I4.
17470
17471 2006-06-07  Wade Berrier <wberrier@novell.com>
17472
17473         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17474         in mono_debugger_create_notification_function)
17475
17476 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17477
17478         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17479         
17480         * mini.c (type_from_stack_type): Disable some changes which do not
17481         seem to work.
17482
17483         * driver.c: Reenable opts.
17484
17485         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17486         of the evaluation stack.
17487         
17488         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17489         evaluation stack trace at entry to the bblock.
17490
17491         * mini.c (merge_stacks): New function to perform verification of stack merges.
17492         Turned off by default.
17493
17494         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17495         STACK_MP.
17496         
17497 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17498
17499         * local-propagation.c: Fixed bug 78549.
17500
17501 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17502
17503         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17504
17505 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17506
17507         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17508         tramp-arm.c, tramp-ia64.c
17509         (mono_debugger_create_notification_function): Update signature to
17510         new signature and use new protocol for creating the notification
17511         function.  
17512
17513         Should fix the build.
17514
17515 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17516
17517         * exceptions-ppc.c (mono_jit_walk_stack)
17518         (ves_icall_get_frame_info): Fix the build
17519
17520 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17521
17522         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17523
17524 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17525
17526         * il2tests.2.il: New file for generics CIL tests.  Add test for
17527         #78019.
17528         * Makefile.am: Update.
17529
17530         Fix #78019
17531         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17532         to nullable types.
17533
17534 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17535
17536         * aliasing.c: Fixed bug 78311.
17537
17538 2006-05-29  Martin Baulig  <martin@ximian.com>
17539
17540         * mini-exceptions.c (mono_find_jit_info): When computing the
17541         native offset, check whether we're actually inside the method's
17542         code; call mono_debug_print_stack_frame() to format the frame.
17543         (ves_icall_System_Exception_get_trace): Call
17544         mono_debug_print_stack_frame() to format the stack frame.
17545         (ves_icall_get_trace): Update to the new debugging API.
17546         (mono_jit_walk_stack_from_ctx): Likewise.
17547         (ves_icall_get_frame_info): Likewise.
17548
17549         * mini.c (get_method_from_ip): Use the new debugging API.
17550         (mono_print_method_from_ip): Likewise.
17551
17552         * exceptions-ppc.c
17553         (mono_jit_walk_stack): Use the new debugging API.
17554         (ves_icall_get_frame_info): Likewise.   
17555
17556 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17557
17558         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17559
17560 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17561
17562         * mini.c: Added "limitator" to inline for debugging.
17563
17564 2006-05-24  Martin Baulig  <martin@ximian.com>
17565
17566         * debug-debugger.c (mono_debugger_init): Create a private,
17567         malloc()-based code manager for the notification function and
17568         intentionally leak it on exit.  This fixes the crash-on-exit race
17569         condition.
17570
17571         * tramp-amd64.c
17572         (mono_debugger_create_notification_function): Added
17573         `MonoCodeManager *' argument.
17574
17575         * tramp-x86.c
17576         (mono_debugger_create_notification_function): Added
17577         `MonoCodeManager *' argument.
17578
17579 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17580
17581         * aliasing.c: Fixed 64 bit issue.
17582         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17583         default since all known bugs are fixed (one more time!).
17584
17585 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17586
17587         * mini.c: write barrier support.
17588
17589 2006-05-23  Martin Baulig  <martin@ximian.com>
17590
17591         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17592         check at the top of the file.
17593
17594 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17595
17596         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17597         reverting changes without reason and without changelog entries.
17598
17599 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17600
17601         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17602         to a few opcodes. Fixes #78439.
17603
17604         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17605         consistency with other archs.
17606
17607         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17608
17609 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17610
17611         * debug-debugger.c: fix the build.
17612
17613 2006-05-17  Martin Baulig  <martin@ximian.com>
17614
17615         * debug-debugger.c
17616         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17617         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17618         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17619         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17620
17621 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17622
17623         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17624
17625 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17626
17627         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17628         MONO_TYPE_GENERICINST.
17629         
17630         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17631         MONO_TYPE_GENERICINST.
17632
17633 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17634
17635         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17636         #78325.
17637
17638 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17639
17640         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17641         mempool.
17642         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17643
17644 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17645
17646         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17647         mono_trace_cleanup ().
17648
17649         * iltests.il: Fix problem with the newly added test.
17650
17651         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17652         due to register constraints, free up the previous hreg. Fixes #78314.
17653
17654         * iltests.il: Add new test for #78314.  
17655
17656         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17657         Interlocked.Add. Fixes #78312.
17658
17659         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17660         
17661 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17662
17663         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17664
17665 2006-05-05  Martin Baulig  <martin@ximian.com>
17666
17667         * debug-mini.c (mono_debug_open_block): New method.
17668
17669         * mini-amd64.c
17670         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17671         the beginning of each basic block.
17672
17673         * mini-x86.c
17674         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17675         the beginning of each basic block.
17676
17677 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17678
17679         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17680         default until I understand why they break the build on amd64.
17681
17682 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17683
17684         * mini.c (mini_cleanup): Call mono_cleanup ().
17685
17686         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17687         errors.
17688
17689 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17690
17691         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17692         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17693         default since all known bugs are fixed, and I cannot reproduce bug
17694         77944... I'm asking Matt Hargett to test again after this commit.
17695
17696 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17697
17698         * mini-codegen.c: Fixed typo that thrashed inline.
17699
17700 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17701
17702         * dominators.c (compute_dominators): Avoid using a worklist since
17703         it is not correct in some cases. Instead, iterate over all bblocks as
17704         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17705
17706 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17707
17708         * mini.c (mono_jit_compile_method_inner): Use
17709         mono_prepare_exception_from_error that resets the value
17710         internally.
17711
17712 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17713
17714         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17715         
17716 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17717
17718         * aliasing.c: Fixed bug 78210.
17719
17720 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17721
17722         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17723         default until all their problems (or the ones they trigger) are fixed.
17724
17725 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17726
17727         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17728         
17729         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17730         as loaded only after resolving patches since that could invoke the same method.
17731
17732         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17733
17734         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17735         functions.
17736
17737         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17738         AOT loader.
17739
17740         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17741         stack.
17742
17743         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17744         made from AOT code through the PLT table.
17745
17746         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17747         holding the plt offset when a call is made to the aot plt trampoline.
17748         
17749 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17750
17751         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17752         amd64 AOT support.
17753
17754         * Makefile.am (common_sources): Fix build breakage.
17755
17756         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17757         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17758         intra-assembly calls if possible.
17759         
17760         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17761
17762         * mini-trampolines.c: Handle PLT entries.
17763
17764         * mini.c: Avoid creating a GOT var for calls.
17765
17766         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17767         from mscorlib code.
17768
17769         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17770         from mscorlib code.
17771
17772         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17773         AOT code.       
17774
17775         * mini.h: Bump AOT file format version.
17776         
17777         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17778         covers more cases.
17779
17780 2006-04-25  Martin Baulig  <martin@ximian.com>
17781
17782         * driver.c: Disable copyprop, consprop and inline when running
17783         inside the debugger.
17784
17785 2006-04-25  Martin Baulig  <martin@ximian.com>
17786
17787         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17788         with `get_current_thread' and added `detach'.
17789         (MonoDebuggerMetadataInfo): Added `thread_size',
17790         `thread_tid_offset', `thread_stack_ptr_offset' and
17791         `thread_end_stack_offset'.
17792
17793 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17794
17795         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17796         aot-runtime.c.
17797
17798         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17799         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17800
17801         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17802
17803         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17804
17805         * aot.c: Add support for ADJUSTED_IID.  
17806
17807 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17808
17809         * aot.c (emit_method_order): Don't align method_order_end.
17810
17811         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17812         the interface ID changes.
17813
17814 2006-04-21  Dick Porter  <dick@ximian.com>
17815
17816         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17817         cleaning up a thread.  Fixes the new part of bug 77470.
17818
17819 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17820
17821         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17822         to managed wrapper.
17823                      
17824 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17825
17826         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17827         
17828         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17829         SIGSEGV. Fixes #78072.
17830
17831         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17832         unregister our SIGABRT handler.
17833
17834 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17835
17836         * mini.c: Disabled inline where it can alter the call stack in a
17837         way visible from managed code.
17838         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17839         default.
17840
17841 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17842
17843         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17844         on other platforms. Fixes #78089.
17845
17846 2006-04-13  Martin Baulig  <martin@ximian.com>
17847
17848         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17849         determine whether we're inside the debugger.
17850
17851         * debug-debugger.h
17852         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17853
17854 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17855
17856         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17857         handler clauses. Fixes #78024.
17858
17859         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17860         in the CALL_MEMBASE opcodes. Fixes #78088.
17861         (mono_arch_get_vcall_slot_addr): Ditto.
17862
17863 2006-04-10  Martin Baulig  <martin@ximian.com>
17864
17865         * debug-debugger.c: The thread handling code has now been moved
17866         into ../metadata/threads.c.
17867
17868 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17869
17870         * driver.c (mono_main): Fix --with-gc=none build.
17871
17872         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17873         (mono_spillvar_offset_float): Ditto.
17874         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17875         hreg, not when its !global, since on ia64, there is a third category: stacked
17876         registers.      
17877
17878 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17879
17880         * mini.c: set MonoInst->klass for load field address and a few other
17881         places.
17882
17883 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17884
17885         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17886
17887 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17888
17889         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17890         the branch opt changes.
17891
17892 2006-04-06  Dick Porter  <dick@ximian.com>
17893
17894         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17895         
17896         * wapihandles.c (mini_wapi_seminfo): 
17897         * driver.c (mono_main): Add semaphore info option
17898
17899 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17900
17901         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17902         branch optimization changes. Fixes #78009.
17903
17904 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17905
17906         * mini.c: ignore accessibility of methods in managed->native wrappers.
17907
17908 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17909
17910         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17911         
17912         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17913
17914 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17915
17916         * mini.c: Modify the branch optimizations to preserve the invariant that
17917         the entries inside the in_bb and out_bb arrays are unique.
17918         (mono_unlink_bblock): Avoid creation of new arrays.
17919
17920 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17921
17922         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17923         change (#77992).
17924
17925 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17926
17927         * mini.c (optimize_branches): Remove the "optimizations" in
17928         the cbranch1/cbranch2 -> branch cases which were causing several
17929         problems in the past. Fixes #77986.
17930
17931 2006-03-31  Chris Toshok  <toshok@ximian.com>
17932
17933         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17934         default optimizations :(
17935
17936 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17937
17938         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17939         branch.
17940
17941 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17942
17943         * local-propagation.c: Added comments to structs and removed
17944         "Mono" prefixes from local tree mover types.
17945
17946 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17947
17948         * Makefile.am (arch_sources): Define this for each architecture so 
17949         libmono_la_SOURCES is defined in one place.
17950
17951 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17952
17953         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17954         from handles/.
17955
17956 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17957
17958         * driver.c: print the GC name supplied by configure.
17959
17960 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17961
17962         * local-propagation.c: Added tree mover, and moved here all the
17963         local propagation code from mini.c
17964         * mini.c: Added support for treeprop, and moved all the local
17965         propagation code to local-propagation.c
17966         * mini.h: Added support for treeprop
17967         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17968         treeprop, inline and deadce by default
17969         * Makefile.am: Added local-propagation.c
17970
17971 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17972
17973         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17974
17975 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17976
17977         * debug-debugger.c: make it compile without the Boehm GC.
17978
17979 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17980
17981         * mini.c: fixed issue with mismatch when an icall is registered
17982         with multiple names but same address.
17983
17984 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17985
17986         * declsec.c, mini-exceptions.c: use write barrier to set reference
17987         fields of managed objects.
17988
17989 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17990
17991         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17992         (can_access_internals): Fix a warning.
17993
17994         * mini.c (print_method_from_ip): Rename this to 
17995         mono_print_method_from_ip so it gets exported.
17996
17997         * trace.c: Deal with strings inside StringBuilder's containing garbage
17998         and fix memory leaks. Fixes #77848.
17999
18000 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
18001
18002         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
18003         fixes #77787.
18004
18005 2006-03-16 Neale Ferguson <neale@sinenomine.net>
18006         
18007         * mini-s390.c: Remove OP_X86_TEST_NULL.
18008
18009 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
18010
18011         * mini.c: use the correct GetHashCode() for the moving collector.
18012
18013 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
18014
18015         * liveness.c: Regalloc spill cost tuning.
18016
18017 2006-03-15 Neale Ferguson <neale@sinenomine.net>
18018         
18019         * mini-s390x.h: Correct S390_LONG macro.
18020
18021         * mini-s390x.c: Cleanup unused code.
18022
18023 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
18024
18025         * jit-icalls.h: New file.
18026
18027         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
18028         icalls and include that instead of including jit-icalls.c.
18029
18030         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
18031         OP_X86 opcodes.
18032
18033 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
18034
18035         * mini.c: when checking for member accessibility, also check for
18036         friend assemblies and for explicit interface implementations.
18037
18038 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
18039
18040         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
18041
18042         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
18043
18044         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
18045         common cases are done first.    
18046
18047         * mini-ops.h: Only define platform specific opcodes on the given platform.
18048
18049         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
18050         branch.
18051         
18052 2006-03-14  Martin Baulig  <martin@ximian.com>
18053
18054         Revert Paolo's change from r57348:
18055
18056         * mini.h: don't use gboolean for bitfields.
18057         * mini.c: verifier changes for fields and methods accessibility.
18058
18059 2006-03-13  Neale Ferguson <neale@sinenomine.net>
18060
18061         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
18062
18063         * mini-s390x.c: Fix conv_r_un.
18064
18065         * cpu-s390, cpu-s390x.md: Fix lengths.
18066
18067 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
18068
18069         * mini.c: nested types have access to all the nesting
18070         levels, not just the enclosing types.
18071
18072 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
18073
18074         * mini.c: added a few more verification checks.
18075
18076 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
18077
18078         * liveness.c: Merge optimizations from the linear-il branch.
18079
18080 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
18081
18082         * mini-ia64.c (emit_call): Add a comment.
18083
18084         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
18085
18086         * tramp-ia64.c: Fix some warnings.
18087
18088 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
18089
18090         * mini.h: don't use gboolean for bitfields.
18091         * mini.c: verifier changes for fields and methods accessibility.
18092
18093 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
18094
18095         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
18096         lazy icall wrapper changes.
18097
18098         * dominators.c: Replace all the dominator algorithms with faster
18099         ones from the linear-il branch.
18100
18101         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
18102         the mempool.
18103
18104         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
18105         common cases are done first.
18106
18107         * mini-amd64.c: Fix some warnings.
18108
18109         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
18110         from the mempool.
18111
18112         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
18113         added code.
18114
18115         * mini.h: Add a missing prototype.
18116
18117 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
18118
18119         * mini.c: Compile icall wrappers lazily.
18120
18121         * mini-codegen.c: Use printf instead of g_print since its much faster.
18122
18123         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
18124         function.
18125
18126         * mini.c (optimize_branches): Cache the negative result from 
18127         remove_block_if_useless ().
18128
18129         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
18130         Also fix some bblock linking issues.
18131
18132         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
18133         assembly files.
18134
18135         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
18136
18137         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
18138         accessed fields first, for better cache behavior.
18139         
18140 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
18141
18142         * mini.c: speedup IList<T> array accesses.
18143
18144 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
18145
18146         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
18147         inline_costs counter. Fixes #77190.
18148
18149 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
18150
18151         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
18152         trace messages. Fixes #77706.
18153
18154 2006-03-04  Martin Baulig  <martin@ximian.com>
18155
18156         * tramp-amd64.c, tramp-x86.c
18157         (mono_debugger_create_notification_function): Use
18158         mono_global_codeman_reserve() to allocate a buffer at runtime and
18159         return it.
18160
18161         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
18162
18163         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
18164         notification function at runtime and then call `initialize' in the
18165         `MONO_DEBUGGER__debugger_info' vtable.
18166
18167 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
18168
18169         * iltests.il: Fix a visibility problem.
18170
18171 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18172
18173         * driver.c, mini.c: add hooks for the counters API.
18174
18175 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
18176
18177         * driver.c: show disabled options.
18178
18179 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18180
18181         * linear-scan.c: always use cost-driven selection.
18182
18183 2006-02-28  Raja R Harinath  <rharinath@novell.com>
18184
18185         * jit-icalls.c (helper_compile_generic_method): Revert change from
18186         2006-02-24.
18187
18188 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
18189
18190         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
18191
18192 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
18193
18194         * inssel.brg: style fixes, mostly to force the updated monoburg
18195         to run for people using svn.
18196
18197 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18198
18199         * mini.c: match monoburg changes.
18200
18201 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18202
18203         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
18204         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
18205         declaration in the header file.
18206
18207 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18208
18209         * helpers.c: reduce relocations and mem usage.
18210
18211 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18212
18213         * mini.h, mini-codegen.c: disable logging features if
18214         requested by configure.
18215
18216 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
18217
18218         * mini.c: tiny verifier changes.
18219
18220 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18221
18222         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18223         cpu-pentium.md: stack alignment changes for osx/x86,
18224         partially from Geoff Norton <gnorton@customerdna.com>.
18225
18226 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18227
18228         * jit-icalls.c (helper_compile_generic_method): Update to changes
18229         in metadata/class.c.
18230
18231 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18232         
18233         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18234         
18235         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18236         interface calls with large offsets.
18237
18238 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18239
18240         * jit-icalls.c (helper_compile_generic_method): Document the
18241         special-case we depend on so that we can inflate the method twice
18242         with the same context with no bad side-effects.
18243
18244 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18245
18246         * mini-x86.c, mini-amd64.c: fix for case when xen support
18247         is disabled.
18248
18249 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18250
18251         * mini-x86.c, mini-amd64.c: generate code to access tls items
18252         in a faster way for Xen systems.
18253
18254 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18255
18256         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18257         updates and compilation fixes for the OSX/x86 port, mostly from
18258         Geoff Norton <gnorton@customerdna.com>.
18259
18260 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18261
18262         * inssel.brg: faster interface call implementation
18263         to sync with the interface_offsets MonoVTable changes.
18264
18265 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18266
18267         * mini.c: more verification checks.
18268
18269 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18270
18271         * mini.c: added a few more verification checks.
18272
18273 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18274
18275         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18276         facility on the processor and use it if available.
18277
18278 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18279
18280         * driver.c, aot.c, mini.c: throw exception if the IL code is
18281         invalid or unverifiable.
18282
18283 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18284
18285         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18286         m.StructField.
18287
18288 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18289
18290         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18291
18292 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18293
18294         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18295         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18296         handling of instantiated generic valuetypes.
18297
18298 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18299
18300         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18301         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18302         instead.
18303
18304         * generics.2.cs: Revert the nullable reftypes tests.
18305
18306 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18307
18308         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18309         using __builtin_frame_address (1) as it doesn't work in the presence
18310         of optimizations. Hopefully fixes #77273.
18311
18312         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18313         -> generics.cs change as it doesn't work with some automake versions.
18314
18315 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18316
18317         * mini.c: handle systems that sue a different way to
18318         retrieve the stack address of the current thread.
18319
18320 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18321
18322         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18323         it specially in the makefile.
18324
18325         * generics.2.cs: Add tests for nullable reference types.
18326
18327 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18328
18329         * mini.c: always handle the case when mono_jit_init()
18330         is called in a thread different from the main thread,
18331         confusing libgc (bug #77309).
18332
18333 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18334
18335         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18336
18337 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18338
18339         * mini.c: change optimize_branches () to use a single loop
18340         and introduce a new optimization to simplify some range checks.
18341
18342 2006-02-03  Martin Baulig  <martin@ximian.com>
18343
18344         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18345         and merged with debugger_thread_manager_add_thread().
18346         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18347         inform the debugger about the main thread.
18348
18349 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18350
18351         * basic.cs: Add test for div.un/rem.un constant folding.
18352
18353 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18354
18355         * cpu-s390x.md: correct int_xor_imm length
18356
18357 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18358
18359         * generics.2.cs: New test for #77442.
18360
18361         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18362         #77442.
18363
18364 2006-02-02  Martin Baulig  <martin@ximian.com>
18365
18366         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18367         <mono/metadata/mono-debug-debugger.h>   
18368
18369         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18370
18371 2006-02-02  Martin Baulig  <martin@ximian.com>
18372
18373         * debug-debugger.h: New header file for debug-debugger.c.
18374
18375         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18376         function is a separate thread anymore; add support for attaching.
18377
18378 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18379
18380         * tramp-x86.c: Fix a warning.
18381
18382 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18383
18384         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18385         on very large methods.
18386
18387         * aot.c (load_patch_info): Fix a warning.
18388
18389 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18390
18391         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18392         mini-ops.h: alu membase optimizations.
18393
18394 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18395
18396         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18397         to speedup StringBuilder.
18398
18399 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18400
18401         * dominators.c (mono_compute_natural_loops): Fix detection of
18402         loop body start blocks.
18403
18404         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18405
18406 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18407
18408         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18409         #75145.
18410
18411 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18412
18413         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18414
18415 2006-01-25  Martin Baulig  <martin@ximian.com>
18416
18417         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18418         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18419         started to cleanup this file a little bit.
18420
18421 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18422
18423         * mini.c: optimize a codepath frequently happening in generics code.
18424
18425 2006-01-23  Martin Baulig  <martin@ximian.com>
18426
18427         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18428
18429         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18430         functions directly.
18431
18432         * driver.c: debug-debugger.c is only available if
18433         `MONO_DEBUGGER_SUPPORTED' is defined.   
18434
18435 2006-01-23  Martin Baulig  <martin@ximian.com>
18436
18437         * debug-debugger.c: Only enable this on platforms where the Mono
18438         Debugger is working (x86 and x86_64).
18439
18440 2006-01-21  Martin Baulig  <martin@ximian.com>
18441
18442         The Mono Debugger is now using the normal `mono' instead of the
18443         `mono-debugger-mini-wrapper' when executing managed code.
18444
18445         * debug-debugger.c: New file; previously known as
18446         debugger/wrapper/wrapper.c.
18447
18448         * debug-mini.c (mono_init_debugger): Removed.
18449
18450         * driver.c (mono_main): Added new `--inside-mdb' command line
18451         argument which is used when running inside the debugger.
18452
18453 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18454
18455         * liveness.c (mono_analyze_liveness): Remove some unused data
18456         structures.
18457
18458 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18459
18460         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18461
18462 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18463
18464         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18465         depends on implementation details of monobitset.
18466
18467         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18468         Fixes #77271.
18469
18470 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18471
18472         * liveness.c: Update after monobitset changes.
18473
18474 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18475
18476         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18477
18478 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18479
18480         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18481
18482         * mini-s390x.c: Remove warning messages.
18483
18484 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18485
18486         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18487
18488 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18489
18490         * generics.2.cs: Add ldelem/stelem_any test.
18491
18492 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18493
18494         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18495
18496 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18497
18498         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18499         
18500 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18501
18502         * generics.2.cs: Reenable vtype tests.
18503
18504         * inssel-x86.brg: Remove an icorrect valuetype rule.
18505
18506 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18507
18508         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18509         initial support for OP_ABS.
18510
18511 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18512
18513         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18514
18515 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18516
18517         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18518         conversion and implement LADD/LSUB.
18519
18520         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18521         architectures.
18522
18523 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18524
18525         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18526
18527         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18528         architectures.
18529
18530 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18531
18532         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18533         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18534         (stack walk problem).
18535
18536 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18537
18538         * aot.c (mono_aot_load_method): Fix a warning.
18539
18540 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18541
18542         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18543
18544 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18545
18546         * iltests.il: Add test for #77148.
18547
18548         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18549         #77148.
18550
18551 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18552
18553         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18554
18555 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18556
18557         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18558         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18559
18560         * basic-long.cs: Add lconv-to-r4/r8 tests.
18561
18562 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18563
18564         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18565
18566         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18567         here as on other archs.
18568
18569 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18570
18571         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18572
18573 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18574
18575         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18576         
18577         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18578
18579         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18580         instrument_prolog; Add memory_barrier instruction.
18581
18582 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18583
18584         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18585
18586 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18587
18588         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18589
18590         * aliasing.c inssel.brg: Fix warnings.
18591
18592         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18593         could skip initialization of some parts of memory.
18594
18595         * mini.c mini-ia64.c: Fix warnings.
18596
18597         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18598
18599 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18600
18601         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18602         a crash seen on sparc.
18603
18604         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18605         
18606         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18607
18608 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18609
18610         * mini-ops.h: Add s390_backchain instruction
18611
18612         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18613
18614         * cpu-s390.md: Add s390_backchain instruction
18615
18616         * mini-s390.c: Significant ABI changes
18617
18618         * mini-s390.h: Cater for zero length structures
18619
18620 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18621
18622         * mini-s390.c: ABI fixes
18623
18624         * inssel-s390.brg: Remove debug statements
18625
18626         * cpu-s390.md: Fix length of ATOMIC_xx operations
18627
18628 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18629
18630         * basic-float.cs: Add float<->long conversion tests.
18631
18632 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18633
18634         * mini-s390.c: Fix LOCALLOC processing.
18635
18636         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18637
18638 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18639
18640         * iltests.il: Add tests for some opcodes not covered by the other
18641         tests.
18642
18643 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18644
18645         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18646         register loading for Tail processing; Correct trace output.
18647
18648         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18649
18650         * cpu-s390.md: Correct size of jmp instruction. 
18651
18652 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18653
18654         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18655
18656 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18657
18658         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18659           Bring s390 up to current level.
18660
18661 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18662
18663         * generics.2.cs: Disable the newly added tests as they do not work yet.
18664         
18665         * generics.2.cs: Add valuetype tests.
18666
18667 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18668
18669         * basic-long.cs: Add i4->u8 test.
18670
18671         * objects.cs: Add tests for JIT intrinsic.
18672
18673         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18674         optimizations lost by a mistake.
18675
18676 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18677
18678         * basic-long.cs: Remove a test moved to objects.cs.
18679
18680         * arrays.cs: Add more array tests.
18681
18682 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18683
18684         * arrays.cs: Add new tests for multi-dimensional arrays.
18685
18686 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18687
18688         * Makefile.am (test_sources2): Add generics.2.cs.
18689         (EXTRA_DIST): Add test_sources2.
18690
18691 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18692
18693         Support for boxing and unboxing nullable types as well as the
18694         isinst operation on nullables, per the CLI ammendment.
18695
18696         * inssel.brg (CEE_ISINST): Special case for nullable
18697
18698         * mini.c (handle_unbox_nullable): new method
18699         (handle_box): Special case for nullable types
18700         (mono_method_to_ir): Call handle_unbox_nullable in correct
18701         places.
18702
18703         * generics.2.cs: New test suite
18704
18705         * Makefile.am: Support for regression tests with generics.
18706
18707 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18708
18709         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18710         allocated to registers. Fixes #76800.
18711
18712 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18713
18714         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18715
18716 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18717
18718         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18719         of platforms.
18720
18721 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18722
18723         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18724         objects.cs.
18725
18726         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18727         
18728         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18729 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18730
18731         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18732         single precision before storing to a single precision location.
18733
18734 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18735
18736         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18737
18738 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18739
18740         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18741         correct files.
18742
18743         * basic.cs: Remove test_0_byte_compares test which was moved to
18744         objects.cs a long time ago.
18745
18746 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18747
18748         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18749
18750 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18751
18752         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18753         handlers are called.
18754
18755         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18756         throwing code.
18757
18758          * mini-ia64.c: Add support for the throw->branch exception 
18759         optimization.   
18760
18761         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18762
18763 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18764
18765         * mini.c: Enabled "fastpath" deadce :-)
18766         
18767 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18768
18769         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18770         alias analysis pass to support it.
18771         * mini.h: Likewise.
18772         * ssa.c: Likewise.
18773         * liveness.c: Likewise (liveness computation can use aliasing
18774         information to be more accurate).
18775         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18776         moreover made so that "--compile-all" uses the given optimization
18777         flags and not the default ones.
18778         * aliasing.c: Alias analysis (new file).
18779         * aliasing.h: Likewise.
18780         * Makefile.am: added "aliasing.c" and "aliasing.h".
18781         
18782 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18783
18784         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18785         OP_L opcodes.
18786
18787 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18788
18789         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18790         fp >= end_of_stack exit condition, as it is not needed, and it might
18791         become true for fp eliminated frames.
18792
18793 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18794
18795         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18796         coded offsets.
18797
18798 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18799
18800         * mini-arm.c: fixed alignment of doubles/longs to match
18801         the C ABI (bug #76635).
18802
18803 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18804
18805         * aot.c: fix compilation with --enable-minimal=aot.
18806
18807 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18808
18809         * mini-arm.c: fixed compatibility with the new
18810         floating point emulator package for compares.
18811
18812 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18813
18814         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18815
18816 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18817
18818         * mini-exceptions.c (print_stack_frame): Output to stderr.
18819         (mono_handle_native_sigsegv): Ditto.
18820
18821 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18822
18823         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18824         OP_LCONV_TO_OVF_I implementation.
18825
18826         * mini-amd64.c: Add support for the throw->branch exception 
18827         optimization.
18828
18829         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18830         when the catch clause catches a more general exception, i.e. Object.
18831
18832 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18833
18834         * cpu-ia64.md: Remove unused opcodes.
18835
18836         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18837         specific defines for architectures defining USE_SIGACTION.
18838
18839         * mini-ia64.c: Fix some warnings.
18840
18841         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18842         version seemed to skip a frame.
18843
18844 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18845
18846         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18847         only calls which are made to native code use this flag.
18848
18849 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18850
18851         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18852         varargs methods as well.
18853         
18854         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18855         which have save_lmf set. Reorganize methods prologs a bit.
18856
18857         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18858         debugger to the proper place.
18859
18860 2005-10-29  Martin Baulig  <martin@ximian.com>
18861
18862         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18863         when running inside the debugger until the debugger has support
18864         for it.
18865
18866 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18867
18868         * mini.h: Fix a warning.
18869
18870 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18871
18872         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18873         we expose publicly, this returns the string.
18874
18875 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18876
18877         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18878         with fp elimination.
18879
18880 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18881
18882         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18883         native stacktrace using the glibc 'backtrace' function if available.
18884
18885 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18886
18887         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18888
18889         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18890         handle SIGSEGVs received while in native code.
18891
18892         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18893         code, call mono_handle_native_sigsegv which will abort the runtime
18894         after printing some diagnostics, instead of converting it into a
18895         confusing NullReferenceException.
18896
18897 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18898
18899         * cpu-pentium.md: Remove unused opcodes.
18900
18901 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18902
18903         * mini-amd64.h (MonoLMF): Add rsp field.
18904
18905         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18906         the lmf too.
18907
18908 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18909
18910         * mini-codegen.c (get_register_spilling): Fix some warnings.
18911
18912 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18913
18914         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18915         elimination during exception handling. Enable fp elimination by
18916         default.
18917
18918         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18919         elimination.
18920
18921 2005-10-16  Martin Baulig  <martin@ximian.com>
18922
18923         * mini-exceptions.c
18924         (mono_debugger_run_finally): New public method for the debugger.
18925
18926 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18927
18928         * debug-mini.c (mono_debug_init_method): Fix warning.
18929
18930         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18931         the 'exname' parameter const to fix some warnings.
18932
18933 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18934
18935         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18936         introduced by the previous patch.
18937
18938 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18939
18940         * basic-float.cs: Add test for precision of float arithmetic.
18941
18942         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18943         when loading/storing single values from/to memory.
18944
18945         * mini.c (mono_jit_compile_method_with_opt): Create the function
18946         pointers in the correct domain.
18947
18948 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18949
18950         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18951         introduced by previous patch.
18952         
18953         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18954         when out_filter_idx is NULL.
18955
18956         * mini-exceptions.c: Don't run filter clauses twice during exception
18957         handling. Fixes #75755.
18958
18959 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18960
18961         * aot.c: Add support for ldflda wrappers.
18962
18963         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18964         #75902.
18965
18966 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18967
18968         * mini.c, mini.h: do not consider exception handlers blocks when
18969         setting up interface variables.
18970
18971 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18972
18973         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18974
18975 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18976
18977         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18978         causes a regression.
18979
18980         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18981
18982 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18983
18984         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18985         of the OP_P definitions.
18986
18987         * TODO: Add a proposal for dealing with the CEE/OP mess.
18988
18989         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18990         optimizations from the x86 port.
18991
18992         * cpu-amd64.md: Ditto.
18993
18994         * basic.cs basic-long.cs: Add tests.
18995
18996 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18997
18998         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18999         Patrik Torstensson's implementation of my exception-handling
19000         optimization idea, when the exception object is not used
19001         (bug #62150).
19002
19003 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
19004
19005         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
19006         of the mul_imm optimizations from the old jit.
19007
19008 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
19009
19010         * mini.c, liveness.c: patch by Patrik Torstensson and
19011         Zoltan Varga to improve performance in methods with
19012         exception clauses.
19013
19014 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
19015
19016         * driver.c: Remove 'Globalization' entry from --version.
19017
19018 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
19019
19020         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
19021         there is a profiler interested in JIT events.
19022
19023         * aot.c: Load profile files produced by the AOT profiling module, and
19024         reorder methods based on the profiling info. Add a 'method_order' table
19025         to the AOT file to make mono_aot_find_jit_info work with the reordered
19026         methods.
19027
19028         * mini.h: Bump AOT file version info.
19029
19030 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
19031
19032         * mini-arm.h: work around what looks like a gcc bug when optimizations
19033         are enabled.
19034
19035 2005-09-28  Raja R Harinath  <rharinath@novell.com>
19036
19037         * Makefile.am (AM_CFLAGS): Don't use += to append inside
19038         conditionals.  Use ...
19039         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
19040
19041 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
19042
19043         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
19044         to determine the amount of memory to copy when passing valuetypes.
19045
19046         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
19047         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
19048
19049 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
19050
19051         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
19052         information about aot.
19053
19054 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
19055
19056         * *.c: Replace the use of {Enter,Leave}CriticalSection with
19057         macros. This will allow a deadlock debugger to easily be plugged
19058         in.
19059
19060 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
19061
19062         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
19063
19064 2005-09-27  Raja R Harinath  <rharinath@novell.com>
19065
19066         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
19067         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
19068         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
19069         ($(arch_built)) [CROSS_COMPILING]: Error out.
19070
19071 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
19072
19073         * aot.c: Add support for the no_special_static flag for classes.
19074
19075 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
19076
19077         * Reapply reverted patches.
19078
19079         * *: Revert r50174 as well.
19080
19081         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
19082
19083 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
19084
19085         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
19086
19087 2005-09-23  Miguel de Icaza  <miguel@novell.com>
19088
19089         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
19090         part of the SIG_HANDLER_SIGNATURE.  
19091
19092 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
19093
19094         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
19095         statistics.
19096
19097         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
19098         introduced by previous patch.
19099
19100 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
19101
19102         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
19103         saved registers too.
19104
19105         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
19106         upon the information returned by get_call_info ().
19107         
19108         * mini-x86.c (add_float): Fix stack size calculation.
19109         (mono_arch_call_opcode): Rewrite this so it works based up the
19110         information returned by get_call_info ().
19111         (mono_arch_get_this_vret_args): Ditto.
19112
19113 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
19114
19115         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
19116         in cinfo to determine the registers which need to be used.
19117
19118 2005-09-20  Miguel de Icaza  <miguel@novell.com>
19119
19120         * driver.c (mono_main): Add --server and --desktop flags. 
19121
19122 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
19123
19124         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
19125         registers as global registers.
19126
19127         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
19128         longer needed with the new register allocator.
19129
19130         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
19131
19132         * cpu-ia64.md: Remove unused opcodes.
19133         
19134         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
19135         
19136 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
19137
19138         * cpu-amd64.md: Remove unused opcodes.
19139
19140         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
19141         needed with the new register allocator.
19142
19143         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
19144         reg-reg moves.
19145
19146 2005-09-16  Raja R Harinath  <rharinath@novell.com>
19147
19148         * Makefile.am (check-local): Don't invoke semdel-wrapper.
19149
19150 2005-09-16  Martin Baulig  <martin@ximian.com>
19151
19152         * exceptions-amd64.c
19153         (throw_exception): Don't call mono_debugger_throw_exception() if
19154         we're a rethrow - see the FIXME in the code.
19155
19156 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
19157
19158         * mini.c (mono_init_exceptions): This only works on some architectures.
19159         
19160 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19161
19162         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
19163         on ia64.
19164
19165         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
19166
19167         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
19168         now in mini-exceptions.c.
19169
19170 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
19171
19172         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
19173         now in mini-exceptions.c.
19174
19175 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19176
19177         * exceptions-x86.c: Applied patch from Patrik Torstensson 
19178         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
19179
19180         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
19181         code into mini-exceptions.c. Add some assertions to it.
19182
19183 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
19184
19185         * aot.c (emit_section_change): Applied patch from "The Software Team" 
19186         (<software@solmersa.com>). Fix as errors on windows.
19187
19188 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19189
19190         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
19191         method info into the LMF.
19192
19193 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19194         
19195         * mini-ia64.c: Add proper unwind info for method epilogs.
19196
19197         * exceptions-ia64.c: Add some code to help debugging.
19198         
19199         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
19200
19201         * mini-exceptions.c: Fix warning.
19202
19203 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19204
19205         * mini.c: Really fix build.
19206
19207         * mini-x86.c mini-amd64.c: Fix build.
19208
19209 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19210
19211         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
19212
19213         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
19214         some Interlocked methods as intrinsics.
19215
19216         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
19217         for Thread methods as well.
19218
19219         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19220
19221         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19222
19223         * mini-ia64.c mini-x86.c mini-amd64.c 
19224         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19225         OP_MEMORY_BARRIER.
19226         
19227         * mini.c (mono_init_exceptions): Fix build breakage.
19228
19229 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19230
19231         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19232         of instructions. Use the new ia64_unw_op macros for emitting unwind
19233         info.
19234
19235         * mini.c (mono_init_exceptions): Initialize exception handling
19236         related trampolines at startup.
19237
19238 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19239
19240         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19241
19242 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19243
19244         * mini.c: Handle type loading errors gracefully during compilation and
19245         throw the appropriate exception.
19246
19247 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19248
19249         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19250         for the mono binary.
19251
19252 2005-09-09  Martin Baulig  <martin@ximian.com>
19253
19254         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19255         the release.
19256
19257 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19258
19259         * mini-arm.h: use emulation for conv.r.un for the release.
19260
19261 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19262
19263         * mini-arm.c, objects.cs: more fixes and tests for them.
19264
19265 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19266
19267         * mini-arm.c: align structures to at least 4 bytes to be able
19268         to keep our current optimized memcpy.
19269
19270 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19271
19272         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19273
19274 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19275
19276         * mini.c: ignore SIGPIPE.
19277
19278 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19279
19280         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19281
19282         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19283
19284 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19285
19286         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19287
19288 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19289
19290         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19291         exception handling support.
19292         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19293         patch by Brian Koropoff <briank@marakicorp.com>).
19294
19295 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19296
19297         * mini.c: revert another 'optimization' which breaks when
19298         items on the eval stack need to be saved at a basic block end
19299         (bug #75940).
19300
19301 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19302
19303         * jit-icalls.c: for arrays, ensure we always provide
19304         lower bounds.
19305
19306 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19307
19308         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19309         
19310         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19311
19312 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19313
19314         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19315         arguments in their original register.
19316
19317 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19318
19319         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19320         memset/memcpy.
19321
19322         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19323         when ssapre is enabled.
19324
19325         * inssel-long.brg: Fix bug in previous patch.
19326
19327         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19328         multiplication by a constant.
19329
19330 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19331
19332         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19333         icc.
19334
19335         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19336         saving registers.
19337
19338 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19339
19340         * inssel-arm.brg: apply changes tested by Brian Koropoff
19341         <briank@marakicorp.com>.
19342
19343 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19344
19345         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19346         
19347 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19348
19349         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19350         to the same register if dreg is just a base register.
19351         (print_ins): Improve printing of membase opcodes.
19352
19353         * inssel-x86.brg: Add optimized ldind(reg) rules.
19354
19355         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19356
19357 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19358
19359         * mini.c: when running under valgrind, set the stack bottom for
19360         the GC at the actual approximate stack for the app (fixes running
19361         mono with valgrind).
19362
19363 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19364
19365         * mini.c: do no break at the first valuetype to init found
19366         (fixes bug #75791).
19367
19368 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19369
19370         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19371
19372 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19373
19374         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19375
19376 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19377
19378         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19379
19380 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19381
19382         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19383
19384         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19385         code.
19386
19387         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19388         code.
19389
19390         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19391         methods.
19392
19393 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19394
19395         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19396
19397 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19398
19399         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19400         in the tail recursion optimization.
19401
19402         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19403         debug info into the assembly file.
19404
19405         * iltests.il: Add test for filter regions.
19406
19407         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19408         initial stack of filter regions. Fixes #75755.
19409
19410 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19411
19412         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19413         stack requirements.
19414
19415 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19416
19417         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19418         the check for an already compiled method on non-ia64 platforms.
19419         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19420         proper domain.
19421
19422         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19423
19424         * inssel-x86.brg: Add some optimized call rules.
19425
19426 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19427
19428         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19429         method here.
19430
19431         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19432         mono_arch_patch_delegate_trampoline.
19433
19434         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19435
19436         * mini-trampolines.c: Fix build.
19437
19438         * mini-amd64.h: Add delegate trampolines.
19439
19440         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19441
19442         * inssel-amd64.brg: Add optimized call rules.
19443         
19444         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19445
19446         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19447
19448 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19449
19450         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19451         change.
19452
19453         * mini-ia64.c: Remove LMF fixmes.
19454
19455         * mini-ia64.h: Remove most fields from LMF.
19456
19457         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19458
19459         * mini-trampolines.c: Add support for IA64 function descriptors.
19460
19461         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19462         for IA64 function descriptors.
19463
19464 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19465
19466         * tramp-arm.c: patch the vtable for virtual calls. Added
19467         support code to register/unregister the LMF.
19468         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19469         more LMF work.
19470
19471 2005-08-19  Dick Porter  <dick@ximian.com>
19472
19473         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19474         bit value if needed.
19475
19476 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19477
19478         * mini.c (mini_get_method): Move handling of wrapper data here.
19479
19480         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19481
19482         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19483         virtual.
19484
19485         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19486         bblock->code does not remain empty.
19487
19488 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19489
19490         * arrays.cs: Add regression test for #75832.
19491
19492         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19493         rules. Fixes #75832.
19494
19495         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19496         instruction scheduling.
19497
19498 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19499
19500         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19501
19502 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19503
19504         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19505
19506         * mini-codegen.c: Fix VC build.
19507
19508         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19509
19510 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19511
19512         * mini.h: fix signature for mono_register_opcode_emulation.
19513
19514 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19515
19516         * mini.c: Get rid of most of the helper_sig_... constants using
19517         mono_create_icall_signature ().
19518
19519 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19520
19521         * jit-icalls.c (helper_ldstr): New helper function.
19522
19523         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19524
19525         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19526         throw, load the string using a helper call instead of creating a string object.
19527
19528         * aot.c: Update after LDSTR changes.
19529
19530         * mini.h: Bump AOT file version.
19531         
19532         * aot.c: Save class size info into the AOT file. Print more statistics during
19533         compilation.
19534
19535         * mini.h: Bump AOT file version.
19536
19537         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19538         ordering of disasm cases. Fixes #74957.
19539
19540 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19541
19542         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19543         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19544         the generic code needed for the ARM port.
19545
19546 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19547
19548         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19549         inssel-arm.brg: more ARM features and fixes.
19550
19551 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19552
19553         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19554         ARM port work in progress.
19555
19556 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19557
19558         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19559
19560         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19561
19562         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19563
19564         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19565
19566         * *-ia64.*: Ongoing IA64 work.
19567         
19568         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19569
19570 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19571
19572         * TODO: Remove out-of-data todo stuff.
19573
19574         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19575         dead code.
19576
19577         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19578
19579         * mini.h: Bump corlib version.
19580
19581 2005-07-27  Martin Baulig  <martin@ximian.com>
19582
19583         * mini-codegen.c
19584         (create_copy_ins): Added `const unsigned char *ip' argument; set
19585         `copy->cil_code' from it.
19586
19587 2005-07-27  Martin Baulig  <martin@ximian.com>
19588
19589         * mini-exceptions.c (mono_handle_exception): Don't call
19590         mono_debugger_handle_exception() for filters.
19591
19592 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19593
19594         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19595         as well.
19596
19597 2005-07-26  Martin Baulig  <martin@ximian.com>
19598
19599         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19600
19601         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19602         helper_compile_generic_method() if the method is actually virtual
19603         and non-final.
19604
19605 2005-07-26  Martin Baulig  <martin@ximian.com>
19606
19607         * mini.c
19608         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19609         public; this is now accessed directly by the debugger.
19610         (mono_generic_trampoline_code): Removed.
19611
19612         * debug-mini.c
19613         (mono_debug_init_method): Also add interncalls and wrappers.
19614
19615 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19616
19617         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19618
19619 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19620
19621         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19622
19623 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19624
19625         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19626
19627 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19628
19629         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19630         getting TLS offsets on AMD64 too.
19631
19632 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19633
19634         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19635
19636 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19637
19638         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19639         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19640
19641 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19642
19643         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19644
19645         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19646         to mini.c.
19647
19648         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19649         mono_sparc_is_virtual_call ().
19650         
19651         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19652
19653         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19654         trampoline parameters.
19655
19656         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19657         
19658         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19659         to mono_arch_get_vcall_slot_addr.
19660
19661         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19662         trampoline code.
19663
19664         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19665
19666 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19667
19668         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19669
19670 2005-07-19  Martin Baulig  <martin@ximian.com>
19671
19672         * exceptions-amd64.c (throw_exception): Call
19673         mono_debugger_throw_exception() here like we're doing it on i386.
19674
19675 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19676
19677         * mini-ia64.c: Add optimized TLS access support.
19678
19679 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19680
19681         * mini-exceptions.c: Ongoing IA64 work.
19682
19683         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19684
19685         * mini.c: Use the default optimization set when embedding. Fixes
19686         #75194.
19687
19688 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19689
19690         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19691         of trampolines to a separate file.
19692
19693         * mini-trampolines.c: New file.
19694
19695         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19696         separate file.
19697         
19698         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19699         amd64/ia64 code.
19700
19701         * mini-codegen.c: Fix cygwin build.
19702
19703 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19704
19705         * mini.c: Add some minor changes needed by the IA64 port.
19706
19707         * *-ia64.*: Ongoing IA64 work.
19708
19709 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19710
19711         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19712         trampolines into arch-independent and arch-dependent parts.
19713
19714         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19715
19716 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19717
19718         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19719
19720         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19721         the xp-regalloc-branch for amd64.
19722
19723         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19724         xp-regalloc-branch for x86.
19725
19726 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19727
19728         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19729
19730 2005-07-06  Martin Baulig  <martin@ximian.com>
19731
19732         * mini.c
19733         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19734         (mono_jit_runtime_invoke): Likewise.
19735
19736 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19737
19738         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19739         on x86 too.
19740         
19741         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19742         without loading their metadata. Reorganize the file format so exception handling+
19743         debug info is kept separate from normal method info. Create MonoJitInfo 
19744         structures for methods lazily.
19745
19746         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19747         loading metadata.
19748         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19749
19750         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19751
19752         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19753         in AOT code.
19754
19755         * mini.h: Bump AOT file version.
19756
19757 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19758
19759         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19760
19761 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19762
19763         * Makefile.am (check-local): Call semdel-wrapper.
19764
19765 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19766
19767         * mini-x86.c: Revert the last change as it seems to break the build..
19768
19769 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19770
19771         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19772         
19773         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19774
19775 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19776
19777         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19778         outside of the macro, so strange stuff doesn't happen with gcc4
19779         (NEW_AOTCONST_TOKEN): Likewise.
19780
19781 2005-06-28  Martin Baulig  <martin@ximian.com>
19782
19783         * mini.c (mini_class_is_system_array): New static method; use this
19784         instead of `klass->parent == mono_defaults.array_class' everywhere
19785         since this also works for the new generic array class.
19786
19787 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19788
19789         * inssel.brg: Remove warnings.
19790
19791 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19792
19793         * mini-ia64.c: Ongoing IA64 work.
19794
19795         * basic-float.cs: Add float->i1 conversion test.
19796
19797         * iltests.il: Add conv.u4 test.
19798
19799 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19800
19801         * inssel-long.brg: Fix bug caused by last change.
19802
19803 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19804
19805         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19806         BSDs.  Allows the x86 JIT to work on OSX86
19807
19808 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19809
19810         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19811         u4->i8 conversion.
19812
19813         * mini-ia64.c: Ongoing IA64 work.
19814
19815 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19816
19817         * mini-ia64.c: Ongoing IA64 work.
19818
19819         * driver.c: Clean up jit_code_hash as well when using --regression.
19820
19821         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19822
19823         * basic-long.cs: Add tests for long->u4 conversion.
19824
19825 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19826
19827         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19828         that we do not depend on undefined C behavior: the order stuff
19829         gets evaluated within an expression. Fixes mono when compiled on
19830         GCC 4.
19831
19832 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19833
19834         * *-ia64.*: Ongoing IA64 work.
19835
19836         * aot.c: Lower memory usage while loading AOT methods.
19837
19838         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19839
19840         * mini.h: Bump AOT file format version.
19841
19842 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19843
19844         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19845
19846 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19847
19848         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19849         not on callee assembly). Fixed some comments.
19850
19851 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19852
19853         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19854         it gets proper disassembly.
19855         (emit_method_info): Remove some dead code.
19856
19857         * mini.c (mini_method_compile): Allways allocate the GOT var in
19858         mono_method_to_ir for emulating opcodes.
19859
19860 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19861
19862         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19863         before freeing the code memory. Fixes #74990.
19864
19865         * objects.cs: Add regression test for #74992.
19866
19867         * liveness.c: Extend live ranges of arguments to the beginning of the
19868         method. Fixes #74992.
19869
19870         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19871         so it points into the faulting instruction.
19872
19873 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19874
19875         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19876
19877         * *-ia64.*: Ongoing IA64 work.
19878
19879         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19880
19881 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19882
19883         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19884
19885         * *-ia64.*: Ongoing IA64 work.
19886
19887 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19888
19889         * basic-long.cs: Add tests for add/sub.ovf.
19890
19891         * basic.cs: Add tests for sub.ovf.
19892
19893         * *-ia64.*: Ongoing IA64 work.
19894
19895 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19896
19897         * *-ia64.*: Ongoing IA64 work.
19898
19899         * basic.cs: Add conv.ovf.i4.un test.
19900
19901 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19902
19903         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19904         
19905 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19906
19907         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19908
19909 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19910
19911         * *-ia64.*: Ongoing IA64 work.
19912
19913 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19914
19915         * trace.[ch]:
19916         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19917
19918 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19919
19920         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19921
19922 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19923
19924         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19925
19926         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19927         of a call is callable by a near call.
19928
19929 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19930
19931         * mini-ia64.c: Ongoing IA64 work.
19932
19933 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19934
19935         * genmdesc.c: Make the generated array non-static.
19936
19937         * inssel-long.brg: Fix LSHR_IMM rule.
19938
19939         * *-ia64.*: Ongoing IA64 work.
19940
19941         * *-ia64.*: Ongoing IA64 work.
19942
19943 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19944
19945         * *-ia64.*: Ongoing IA64 work.
19946
19947         * *-ia64.*: Ongoing IA64 work.
19948         
19949         * mini-ia64.c: Ongoing IA64 work.
19950
19951         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19952
19953 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19954
19955         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19956         
19957         * objects.cs basic-long.cs: Move some tests to objects.cs.
19958
19959 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19960
19961         * *-ia64.*: Ongoing IA64 work.
19962
19963         * iltests.il: Add a new test.
19964
19965         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19966         newobj. Fixes #75042.
19967
19968 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19969
19970         * *-ia64.*: Ongoing IA64 work.
19971         
19972         * *-ia64.*: Ongoing IA64 work.
19973         
19974         * *-ia64.*: Ongoing IA64 work.
19975
19976         * basic.cs objects.cs: Move tests accessing static variables as well.
19977
19978         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19979
19980 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19981
19982         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19983
19984         * driver.c: Always print failed tests.
19985
19986         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19987         frame pointer.
19988
19989         * *ia64*: Ongoing IA64 work.
19990
19991 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19992
19993         * basic.cs: Add tests for add.ovf. Fix warnings.
19994
19995 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19996
19997         * driver.c (mono_main): Avoid crash if no argument is passed to
19998         --break;  Do not use g_error, but f_printf.   And fix all other
19999         ocurrences of the same crash.
20000
20001 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
20002
20003         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
20004         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
20005         Fixes #74742.
20006
20007 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
20008
20009         * *-ia64.*: Add beginnings of IA64 backend.
20010
20011         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
20012
20013 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
20014
20015         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
20016         Fixes #74925.
20017
20018         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
20019
20020         * mini-amd64.c: Fix a warning.
20021
20022 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
20023
20024         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
20025         in float_neg. Fixes #74897.
20026
20027         * mini-amd64.c (emit_call): Fix another near call bug.
20028
20029 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
20030
20031         * declsec.c: Keep the appdomain information in the structure. Added a 
20032         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
20033         value gets overwritten).
20034         * declsec.h: Set the default MonoArray for the the stack to 6. Added
20035         an MonoAppDomain member to MonoSecurityFrame.
20036         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
20037         used in the stack walk. Now use a MonoArray which grow (double) when
20038         it gets full.
20039
20040 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
20041
20042         * mini.c: Re-enabled runtime cleanup, since running threads should
20043         now properly stop when exiting.
20044
20045 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
20046
20047         * mini-codegen.c: New file contaning the arch-independent local
20048         register allocator. Not used by any architectures yet.
20049
20050         * mini.h linear-scan.c: Merge some changes from the 
20051         mini-xp-local-regalloc branch.
20052
20053 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
20054
20055         * mini-amd64.c (emit_call): Fix calls to native functions when the
20056         runtime is compiled as a shared library. Fixes #74756.
20057
20058         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
20059         on a literal field. Fixes #74751.
20060
20061 2005-04-25  Raja R Harinath  <rharinath@novell.com>
20062
20063         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
20064
20065 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
20066
20067         * objects.cs: Add missing null casting test.
20068
20069 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
20070
20071         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
20072         in wrapper methods. Also rename 'address' variable to 'offset'.
20073
20074 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
20075
20076         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
20077         warnings.
20078         
20079         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
20080
20081         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
20082         work on windows.
20083
20084 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
20085
20086         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
20087
20088 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
20089
20090         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
20091         just the last bytes.
20092
20093 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
20094
20095         * aot.c (mono_compile_assembly): Fix warning.
20096
20097         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
20098         by the _MSC_VER stuff.
20099
20100 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
20101
20102         * inssel-long.brg: Fix #74588.
20103
20104         * cpu-amd64.md: Fix #74591.
20105
20106         * iltests.il: Add new regression tests.
20107
20108 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
20109
20110         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
20111         valuetype.
20112
20113 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
20114
20115         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
20116
20117         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
20118         from Bill Middleton <flashdict@gmail.com>.
20119
20120 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
20121
20122         * arrays.cs: Add new regression test. Fix warnings.
20123
20124 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
20125
20126         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
20127         and leakage in CKFINITE.
20128
20129         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
20130         this to a null op since it is called on amd64 too.
20131
20132         * exceptions-amd64.c (get_throw_trampoline): Align stack.
20133
20134         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
20135         body since this is not used on amd64.
20136         
20137         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
20138
20139         * mini-amd64.c: Remove obsolete fixmes.
20140
20141         * mini.c (print_method_from_ip): Fix debugging support.
20142
20143 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20144
20145         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
20146         so that expressions that don't give much gain are not reduced.
20147         * ssapre.h: Likewise.
20148
20149 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
20150
20151         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
20152
20153         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
20154
20155         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
20156
20157 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
20158
20159         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
20160
20161         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
20162
20163 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
20164
20165         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
20166         stack touching.
20167
20168         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
20169
20170         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
20171
20172         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
20173
20174         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
20175         MONO_ARCH_USE_SIGACTION. Fixes #74252.
20176
20177         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
20178
20179         * mini-x86.c: Fix up stack overflow handling.   
20180
20181         * exceptions.cs: Add new regression test.
20182
20183 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
20184
20185         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
20186         mono_jit_thread_attach.
20187
20188         * mini.c (mono_method_to_ir): Verify called method is not abstract.
20189
20190 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20191
20192         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
20193         avoid calling constructors using callvirt.
20194
20195         * inssel.brg: Fix #74073.
20196
20197 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
20198
20199         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
20200         compilation with non-GCC compilers.
20201         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
20202         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
20203
20204 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
20205
20206         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
20207         klass->interface_offsets (will likely fix bug#74073).
20208
20209 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20210
20211         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
20212
20213 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
20214
20215         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
20216         to amd64_div_reg_size ().
20217         
20218         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
20219
20220 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20221
20222         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20223
20224 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20225
20226         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20227
20228 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20229
20230         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20231         
20232         * mini.c (mono_precompile_assembly): Load and precompile referenced
20233         assemblies as well. Fixes #74015.
20234
20235 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20236
20237         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20238
20239 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20240
20241         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20242         a lot of checks and (anyway) permissions cannot work until corlib is 
20243         loaded.
20244
20245 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20246
20247         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20248
20249 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20250
20251         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20252         calls (fixes bug#72824).
20253
20254 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20255
20256         * mini.c: fix tail recursion elimination (see test in bug#73936).
20257
20258 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20259
20260         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20261         some fp functions in sse2 mode.
20262
20263 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20264
20265         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20266
20267 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20268
20269         * mini.h mini.c: Add mono_get_jit_tls_key ().
20270
20271         * mini-x86.c: Enable fast TLS support on windows.
20272
20273 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20274
20275         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20276         * mini.c: Check for p/invoke method when generating code. If a
20277         p/invoke method, or it's class, isn't decorated with [Suppress
20278         UnmanagedCodeSecurity] then generate code to call System.Security.
20279         UnmanagedDemand (only if the security manager is active).
20280
20281 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20282
20283         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20284         last change as it seems to cause strange crashes.
20285         
20286 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20287
20288         * *.c: handle unsafe function pointers where needed.
20289
20290 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20291
20292         * mini.c (mono_jit_free_method): Remove the fixme too.
20293
20294 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20295
20296         * mini.c: As discussed, make the code actually free the delegate
20297         thunk now, to enable the debugging of delegate problems, use
20298         MONO_DEBUG=1 when running Mono. 
20299
20300         This takes also care of parts of the leaks as seen by Joe.
20301
20302 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20303
20304         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20305         thread_tls_offset calculation.
20306
20307 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20308
20309         * declsec.c: Reworked linkdemand checks for icall. The previous code
20310         was using the declaration code (untrusted) and didn't work as expected
20311         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20312         specific case.
20313
20314 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20315
20316         * iltests.il: Add new localloc test.
20317
20318         * mini-amd64.c: Handle large stack allocations the same way as on
20319         windows if stack overflow handling is working.
20320         
20321         * mini-amd64.c: Allocate the signal stack using mmap.
20322
20323         * mini.c (sigsegv_signal_handler): Fix reading of context.
20324
20325         * mini-exceptions.c: Fix up stack overflow handling.
20326
20327         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20328
20329         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20330
20331         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20332
20333         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20334
20335         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20336         tramp_init functions as they are no longer needed.
20337
20338 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20339
20340         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20341         
20342         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20343
20344         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20345         
20346         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20347         support that now.
20348
20349         * mini-ops.h: Add OP_LMUL_IMM.
20350
20351         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20352         long mul/div opcodes as intrinsic.
20353
20354         * mini-amd64.c (emit_call): Handle the case when the callee might be
20355         an AOT method.
20356
20357 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20358
20359         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20360         extra safe.
20361         
20362         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20363
20364         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20365
20366 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20367
20368         * mini.c (mono_codegen): Don't leak here, to help people running
20369         monogrind.
20370
20371 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20372
20373         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20374         conversions in sse2 mode.
20375
20376         * basic-float.cs: Add regression test.
20377         
20378         * mini-amd64.c: Reenable sse2.
20379
20380 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20381
20382         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20383
20384 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20385
20386         * driver.c: Copyright text should include 2005.
20387         
20388 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20389
20390         * cpu-amd64.md (load_membase): Fix more max lengths.
20391
20392 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20393
20394         * cpu-amd64.md (load_membase): Fix max length.
20395
20396         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20397
20398         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20399
20400         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20401         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20402
20403         * basic-float.cs: Add rounding regression test.
20404
20405         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20406
20407 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20408
20409         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20410         structures in registers for pinvoke wrappers.
20411
20412 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20413
20414         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20415
20416 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20417
20418         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20419         wrapper to mono_jit_thread_attach.
20420
20421         * mini.c (mini_jit_thread_attach): New jit icall.
20422
20423         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20424         native->managed wrappers.
20425
20426         * exceptions.cs: Add new regression test.
20427
20428         * mini.c (optimize_branches): Check regions in the cbranch to throw
20429         block case as well. Fixes #73242.
20430
20431 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20432
20433         * mini.c: thread safety fixes.
20434
20435 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20436
20437         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20438         patching stuff, since delegates use jump trampolines so there is
20439         no caller.
20440
20441         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20442         jump trampolines.
20443         
20444         * tramp-amd64.c: Fix build.
20445
20446         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20447         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20448
20449         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20450         Rename this to mono_arch....
20451         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20452
20453         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20454
20455         * mini-amd64.c (emit_call): If both the caller and the callee is
20456         guaranteed to have 32 bit addresses, emit a normal call.
20457
20458         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20459
20460         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20461         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20462         method_ptr inside delegates.
20463
20464 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20465
20466         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20467         invalidated. Fixes #73001.
20468
20469         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20470
20471         * mini-x86.c: Only use stdcall for pinvokes on windows.
20472
20473 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20474
20475         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20476         * mini-x86.c: remove unreliable __thread var offset detection,
20477         use the correct accessors and enable by default.
20478
20479 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20480
20481         * mini.c (mono_jit_free_method): Fix memory leak.
20482
20483 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20484
20485         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20486
20487 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20488
20489         * cpu-amd64.md: Fix lengths of atomic opcodes.
20490
20491 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20492
20493         * driver.c: try to not imply using ICU is any good.
20494
20495 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20496
20497         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20498         functions as inline ops.
20499
20500         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20501         some Interlocked functions as inline ops.
20502
20503         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20504
20505         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20506
20507         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20508
20509         * mini.c: Add support for OP_NOT_TAKEN.
20510
20511         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20512         structures in registers for pinvoke wrappers.
20513
20514         * mini-amd64.c: Fix warnings.
20515
20516 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20517
20518         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20519
20520         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20521
20522         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20523         address instead of loading the address from it.
20524
20525         * mini-x86.c: Add support for returning small structs in registers
20526         on Win32. Fixes part of #70864.
20527         
20528 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20529
20530         * trace.c (get_token): Improve error checking.
20531
20532 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20533
20534         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20535
20536 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20537  
20538         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20539         it can be reused for MonoClass.
20540         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20541         _LINKDEMAND.
20542
20543 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20544
20545         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20546         instead of a MonoReflectionMethod. The method information wasn't used
20547         when displaying SecurityException details (but will be now).
20548
20549 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20550
20551         * Makefile.am : windows build fix.
20552
20553 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20554
20555         * iltests.il: Add new regression test.
20556
20557         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20558         #72522.
20559
20560 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20561  
20562         * mini.c: Moved linkdemand check into helper function check_linkdemand
20563         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20564         LDFTN, LDVIRTFTN).
20565
20566 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20567
20568         * declsec.c: Added statistics counter for different kinds of 
20569         LinkDemands.
20570         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20571         (and commented) declaration.
20572         * mini.c: Added statistics counter for security Demand code 
20573         generation. Added display of security statistics.
20574
20575 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20576
20577         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20578         Fix compilation errors under gcc-2.95.
20579
20580 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20581
20582         * mini.c, driver.c: Use the new jit trampoline hashtable
20583
20584 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20585
20586         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20587
20588 2005-02-11  Martin Baulig  <martin@ximian.com>
20589
20590         * debug-mini.c (mono_debug_close_method): Free the line number array.
20591
20592 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20593
20594         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20595         icalls.
20596
20597         * mini.h: Bump AOT file format version. 
20598
20599 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20600
20601         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20602         APTC and P/Invoke.
20603         * declsec.h: Added macros to get/set lazyly initialized security 
20604         informations about assemblies. Added new enum for different type of
20605         possible LinkDemand violation. Added function to check LinkDemands.
20606         * mini.h: Added a field to MonoCompile to hold any security violation
20607         detected when JITting a method (so it can be thrown later).
20608         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20609         and CEE_CALLVIRT. Added code to throw exception at the end of
20610         mini_method_compile (note: the exception is unhandled right now).
20611
20612 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20613
20614         * mini.c, jit-icalls.c: use the managed implementation of
20615         memset for initobj and memset, to avoid managed <-> unmanaged
20616         transitions.
20617
20618 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20619
20620         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20621         optimization if it would need a GOT var.
20622
20623         * basic.cs: Add tests for constant propagation and switch statements.
20624
20625         * ssa.c: Fix out-of-range constant propagation and switch statements.
20626
20627 2005-02-09    <vargaz@freemail.hu>
20628
20629         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20630
20631 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20632
20633         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20634
20635 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20636
20637         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20638
20639 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20640
20641         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20642         arithmetic operations.
20643
20644 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20645
20646         * mini-ppc.c: add a workaround for broken user code that
20647         DllImports vararg functions with non-vararg signatures.
20648
20649 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20650
20651         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20652         meaningfull error message for assemblies written in Managed C++.
20653
20654         * tramp-amd64.c mini-amd64.h: Add support for 
20655         create_trampoline_from_token ().
20656
20657         * aot.c mini-x86.c abcremoval.c: Applied patch from
20658         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20659
20660 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20661
20662         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20663         which takes a MonoImage/token as parameter instead of a MonoMethod.
20664
20665         * aot.c: Use the new trampoline for initializing vtables.
20666
20667         * aot.c: Add support for ldfld/stfld_remote wrappers.
20668
20669         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20670         rules for compare <MEM>, IMM.
20671
20672         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20673
20674         * aot.c: Handle inherited finalizers correctly.
20675
20676 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20677
20678         * inssel.brg (stmt): Add a missing _setup_... ().
20679
20680         * aot.c: Save some parts of the class state to the AOT file and use it
20681         to recompute that state when a class is initialized.
20682
20683         * mini.c: Install AOT hooks into the runtime.
20684
20685         * mini.h: Bump AOT file format version.
20686         
20687         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20688         Fixes #72148.
20689
20690         * iltests.il: Add new test.
20691
20692 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20693
20694         * mini.c: fix typo.
20695
20696 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20697
20698         * mini.c: setup the statistical profiler in the thread attach
20699         callback to cope with the new single thread code.
20700
20701 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20702
20703         * mini-ppc.c: ensure we have enough room for the profiler
20704         calls (fixed bug#72084).
20705
20706 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20707
20708         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20709         it.
20710
20711 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20712
20713         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20714
20715 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20716
20717         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20718         to succesfully execute parrotbench).
20719         * ssapre.h: Likewise.
20720
20721 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20722
20723         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20724         variable for stores to method arguments (fixes a SSAPRE issue).
20725
20726 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20727
20728         * mini.c: handle value types in dup, fixes gen-112.cs.
20729
20730 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20731
20732         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20733         sequence for calls in dynamic methods to avoid thunks.
20734
20735 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20736
20737         * mini.c: correctly remove dynamic methods from the hashtable.
20738
20739 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20740
20741         * driver.c: Disabled SSAPRE until fix the bug that appears
20742         in IronPython's parrotbench.
20743
20744 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20745
20746         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20747
20748         * mini.c (mono_method_to_ir): Revert the previous change.
20749         
20750         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20751         when AOT compiling.
20752
20753         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20754         mono_jit_info_table_find () etc. when running under valgrind.
20755
20756         * inssel.brg: Fix warnings.
20757
20758         * mini-exceptions.c: Fix warnings.
20759
20760 2005-01-31  Martin Baulig  <martin@ximian.com>
20761
20762         * driver.c (compile_all_methods_thread_main): Don't try to compile
20763         generic methods or anything which has type parameters.
20764
20765 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20766
20767         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20768
20769         * TestDriver.cs: Add --verbose flags.
20770
20771         * graph.c ssa.c: Fix 64 bit warnings.
20772         
20773         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20774         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20775         Fix 64 bit warnings.
20776
20777         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20778         variable not spotted by gcc.
20779         
20780         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20781         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20782         X86_COMPARE_MEMBASE opcodes.
20783
20784         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20785
20786 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20787
20788         * *: MonoMethod->signature might be NULL now. You *MUST* use
20789         mono_method_signature.
20790
20791 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20792
20793         * driver.c (compile_all_methods_thread_main): Compile the methods
20794         without invoking cctors.
20795
20796 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20797
20798         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20799         * basic-calls.cs: test for the above.
20800
20801 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20802
20803         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20804         MonoJitInfo changes.
20805
20806 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20807
20808         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20809         eagerly if it contains dynamic methods.
20810         
20811         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20812
20813         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20814         trace, it is now computed by an icall from trace_ips.
20815         
20816         * mini-exceptions.c: Fix a warning.
20817
20818 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20819
20820         * mini-exceptions.c: don't bother getting stack trace info if
20821         it's not going to be used.
20822
20823 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20824
20825         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20826         ssapre-mini-ops.h.
20827
20828 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20829
20830         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20831
20832         * aot.c: Avoid calling mono_method_get_header () if not needed.
20833
20834         * mini.h: Bump AOT file format version.
20835         
20836         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20837
20838         * mini.c (mono_print_tree): Print more info for calls.
20839
20840 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20841
20842         * declsec.h: Remove warning by adding missing include for marshal.h
20843
20844 2005-01-26  Martin Baulig  <martin@ximian.com>
20845
20846         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20847         `ip' twice.
20848
20849 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20850
20851         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20852         flags.
20853
20854         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20855
20856         * aot.c (mono_compile_assembly): Fix a warning.
20857
20858 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20859
20860         * declsec.c: Look for security attributes on the original MonoMethod 
20861         (and not the wrapped one). This fix permissions on icalls.
20862
20863 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20864
20865         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20866
20867         * mini.c (mono_allocate_stack_slots): Add a fixme.
20868
20869         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20870
20871 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20872
20873         * inssel.brg: optimize casts of sealed types (more
20874         optimizations waiting for fixes in remoting).
20875
20876 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20877
20878         * inssel.brg (stmt): Add another dummy rule.
20879
20880         * driver.c: Fix warnings.
20881
20882         * driver.c (mono_main): If running under valgrind, instruct glib to use
20883         the system allocation functions so valgrind can track the memory
20884         allocated by the g_... functions.
20885
20886         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20887
20888         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20889
20890         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20891
20892         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20893         variables in try regions.
20894
20895         * mini.c (mini_method_compile): Don't disable optimizations on large
20896         methods when AOT compiling.
20897
20898         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20899         allocate stack slots. Not yet used.
20900
20901 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20902
20903         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20904
20905 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20906
20907         * mini-ppc.c: make the branch info relative as the code
20908         buffer can be reallocated.
20909
20910 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20911
20912         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20913         * driver.c: Removed the AOT/security restriction. Now initialize the
20914         security manager (in metadata) if --security is used.
20915         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20916         rather than the pointer to declarative security, when AOT is used.
20917
20918 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20919
20920         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20921         basic blocks, reduced intrinsic exception throwing code size.
20922
20923 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20924
20925         * driver.c (mini_usage): Reorder the usage screen.
20926
20927 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20928
20929         * mini.c (mono_resolve_patch_target): Fix warning.
20930
20931 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20932
20933         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20934         previous patch.
20935
20936         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20937
20938         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20939         breaks the amd64 build.
20940
20941         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20942         register allocation. Fixes #71454.
20943
20944         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20945
20946         * arrays.cs: Add new regression test.   
20947
20948 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20949
20950         * ssapre.c: Turned usage of snprintf to GString.
20951         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20952         (I left it on by mistake in my previous commit).
20953
20954 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20955
20956         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20957         on cond branch optimization (fixes bug# 71515).
20958
20959 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20960
20961         * abcremoval.c: Fixed bug 71062.
20962         * abcremoval.h: Likewise.
20963
20964 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20965
20966         * mini.c: Added a new functionality to optimize_branches, the removal
20967         of useless basic blocks, and fixed some problem in the removal of
20968         critical edges; some utility functions added for both purposes.
20969         * ssapre.c: Added complex expression support, and fixed bug 70637.
20970         * ssapre.h: Likewise.
20971         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20972         enabled in SSAPRE.
20973         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20974         * driver.c: Re-enabled SSAPRE.
20975
20976 2005-01-19  Martin Baulig  <martin@ximian.com>
20977
20978         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20979         the result of mono_get_method_constrained().
20980
20981 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20982
20983         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20984         manager.
20985
20986 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20987
20988         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20989         be detected.  Fixes #59296.
20990
20991 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20992
20993         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20994         which can happen. Fixes #71361.
20995
20996 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20997
20998         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20999         manager.
21000
21001 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
21002
21003         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
21004         appdomain-unload.exe to fail.
21005         
21006         * mini.c: Fix some memory leaks.
21007
21008 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
21009
21010         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
21011         Fixed bug and sped up some codepaths.
21012
21013 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
21014
21015         * mini.c: Fix some memory leaks.
21016
21017         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
21018         conversion.
21019
21020         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
21021
21022         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
21023         #71320.
21024
21025         * iltests.il: Add regression test for #71320.
21026
21027 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
21028
21029         * mini.c (mono_codegen): Fix installation of profiler hooks.
21030
21031         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
21032
21033 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
21034
21035         * mini.h, mini.c, cfold.c: optimize access to enum
21036         readonly fields, too. Eval conditional branches if possible
21037         to perform unreachable code removal in more cases.
21038
21039 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
21040
21041         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
21042
21043         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
21044         code manager.
21045
21046         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
21047         WinXP DEP. Fixes #71244.
21048
21049 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
21050
21051         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
21052
21053 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
21054
21055         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
21056
21057 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
21058
21059         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
21060         changes.
21061
21062         * mini.h: Bump AOT version.
21063
21064         * mini.h (MonoCompile): Change exvar to a hash table.
21065
21066         * mini.c: Allocate a separate exvar for each handler block.
21067
21068         * mini.c: Get rid of the computation of filter_lengths, its not needed.
21069
21070         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
21071         ex var with the pending exception and only throw if the two are equal.
21072         Fixes #68552.
21073         
21074         * exceptions.cs: Add tests for rethrow and nested catch clauses.
21075
21076         * mini-x86.c: Fix warnings.
21077
21078         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
21079         used by all the ports now.
21080
21081         * aot.c: Add write-symbols and save-temps options.
21082
21083 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
21084
21085         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
21086
21087 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
21088
21089         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
21090         operations.
21091
21092         * tramp-s390.c: Check vtable slot belongs to the domain.
21093
21094         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
21095         as per other platforms.
21096
21097         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
21098
21099 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
21100
21101         * driver.c: we don't run the Main() code in a subthread anymore.
21102
21103 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
21104
21105         * mini.c: added experimental rtc support in the statistical
21106         profiler: if the user has the permission, more accurate statistics
21107         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
21108         The MONO_RTC value must be restricted to what the linux rtc allows:
21109         power of two from 64 to 8192 Hz.
21110
21111 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
21112
21113         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
21114
21115 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
21116
21117         * mini-ppc.c: better icache flush for smp.
21118
21119 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
21120
21121         * mini-amd64.c (emit_move_return_value): Fix memory leak.
21122
21123         * mini-x86.c (get_call_info): Add the get_call_info () code from the
21124         amd64 port, not yet used.
21125
21126 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21127
21128         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
21129         a struct type.
21130
21131 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
21132
21133         * driver.c: Added --security option to activate the security manager.
21134         Right now this will allow code generation for declarative demands and
21135         is disabled when AOT is specified.
21136         * mini.c: Add code generation for declarative security demands.
21137         * mini.h: Add mono_use_security_manager as an extern gboolean.
21138
21139 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21140
21141         * aot.c (mono_compile_assembly): Speed up compilation a bit by
21142         emitting more dense assembly code.
21143
21144         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
21145         exception throwing stuff.
21146
21147 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
21148
21149         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
21150         dead code.
21151
21152         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
21153         left in by mistake.
21154
21155         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
21156         fixed.
21157
21158         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
21159
21160         * tramp-*.c: Only patch vtable slots if the object is in the current
21161         domain. Fixes appdomain-unload.exe.
21162
21163         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
21164         
21165         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
21166         x86 branch.
21167
21168 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21169
21170         * mini.c (reverse_branch_op): New helper function.
21171
21172         * mini.c (optimize_branches): Run the new optimization only on 
21173         platforms which support it. Also reverse all kinds of branches.
21174
21175         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
21176
21177         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
21178         a throw statement.
21179
21180         * mini.c (optimize_branches): Reverse not-equals branches if the false
21181         bblock is a throw. This happens a lot of time with argument checking in
21182         corlib.
21183
21184         * mini.c (mono_codegen): Add support for placing basic blocks after
21185         the function epilogue.
21186
21187         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
21188         function epilogue.
21189         
21190 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
21191
21192         * mini.c (setup_stat_profiler): Only set this up if the platform
21193         supports ITIMER_PROF.
21194
21195 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21196
21197         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
21198         previous patch.
21199
21200         * inssel.brg: Fix a warning.
21201
21202 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
21203
21204         * mini.c: added support for statistical profiler 
21205         (run with: --profile=default:stat).
21206
21207 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
21208
21209         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
21210
21211         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
21212
21213         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
21214         related to global registers from the amd64 port.
21215
21216 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21217
21218         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
21219
21220         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21221         with global registers.
21222         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21223
21224         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21225
21226 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21227
21228         * debug-mini.c (encode_value): Fix off-by-one.
21229
21230         * aot.c (encode_value): Likewise.
21231
21232         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21233
21234 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21235
21236         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21237         AOT.
21238
21239         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21240         
21241         * aot.c (emit_method_info): Increase size of temp buffer.
21242
21243         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21244         the AOT case.
21245
21246 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21247
21248         * aot.c (emit_method_info): Fix build.
21249         
21250         * aot.c: Further rework of the AOT file format to reduce the size of
21251         the method info data.
21252
21253         * mini.h: Bump AOT file format version.
21254
21255 2004-12-27  Martin Baulig  <martin@ximian.com>
21256
21257         * mini.c (mini_get_method): New static method; call
21258         mono_get_method_full() and mono_get_inflated_method().
21259         (mono_method_to_ir): Use mini_get_method() instead of
21260         mono_get_method_full(). 
21261
21262 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21263
21264         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21265
21266 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21267
21268         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21269
21270         * inssel-amd64.brg: Add some optimization rules.
21271
21272 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21273
21274         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21275         standard not GC'd stuff is fine.
21276
21277 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21278
21279         * aot.c: Rework the AOT file format to get rid of most of the global
21280         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21281
21282         * mini.h: Bump AOT file format version.
21283         
21284 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21285
21286         * mini.h: Bump AOT file format version.
21287
21288         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21289         address is inside a GOT.
21290
21291         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21292
21293         * cpu-pentium.md: Increase the maximum size of some instructions which
21294         might involve a got access.
21295         
21296         * mini.c (get_method_from_ip): Another debug helper function.
21297
21298         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21299         when got var accesses are created during the decompose phase.
21300
21301         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21302
21303         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21304         argument mini_compile_method and to MonoCompile, and use this to
21305         determine whenever a given method is compiled for AOT. This allows the
21306         other methods compiled during AOT compilation to be free of AOT stuff,
21307         so the backends does not need to add special support for them by
21308         creating a fake GOT etc.
21309
21310         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21311         longer needed.
21312
21313 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21314
21315         * mini.c (mono_method_to_ir): It turns out that some of the
21316         x-appdomain wrappers are lax with types, so just ignore this for
21317         all wrappers.
21318
21319         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21320         at the vtable->klass. If it is non-shared code we can just use the
21321         vtable.
21322
21323 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21324
21325         * mini-ppc.c: access MonoDomain from tls, too.
21326
21327 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21328
21329         * declsec.c: Removed unused variable (and related warning ;-)
21330
21331 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21332
21333         * iltests.il: New test for LDELEMA on an array of ref types.
21334
21335         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21336         all ldelema's on reftypes.
21337         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21338         it was the wrong place to put it.
21339
21340         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21341         register to pop to make this cleaner, at the request of Paolo.
21342
21343 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21344
21345         * mini-ops.h (OP_GETHASHCODE): New op.
21346
21347         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21348
21349         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21350         operation.
21351
21352         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21353         by 25%.
21354         
21355         * mini-x86.c (mono_arch_output_basic_block): Rather than
21356
21357         add ebp, 4
21358
21359         Emit
21360
21361         pop edx
21362
21363         The first is 3 bytes while the second is 1. This saves 36 kb on
21364         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21365         see a small boost because of icache locality.
21366
21367         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21368
21369 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21370
21371         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21372         started code sharing with the generic code.
21373
21374 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21375
21376         * mini-ppc.c, cpu-g4.md: added code for direct access to
21377         tls data slots.
21378
21379 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21380
21381         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21382          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21383         to OP_TLS_GET.
21384
21385 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21386
21387         * declsec.c|h: Added functions to cache the declarative stack modifiers
21388         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21389         structure.
21390         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21391         created. Register internal calls for System.Security.SecurityFrame::
21392         _GetSecurityFrame and _GetSecurityStack.
21393         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21394         the definitions for the new stack walk/callback mechanism.
21395         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21396         first security frame for LinkDemands and InheritanceDemands) and
21397         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21398         from lupus.
21399         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21400         walk initialization (lupus).
21401
21402 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21403
21404         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21405         idiom.
21406         (handle_loaded_temps): Do not create a temporary variable for
21407         things that we know are temps. They will never be modified.
21408         (mono_spill_call): Set MONO_INST_IS_TEMP
21409         (mono_emulate_opcode): ditto
21410         (emit_tree): ditto
21411         (mono_method_to_ir.CEE_DUP): ditto
21412
21413 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21414
21415         * mini.c (type_to_eval_stack_type): Make this handle the void type
21416         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21417         (emit_tree): use ip_in_bb to special case some common idioms
21418         Update all callers to pass in the IP.
21419         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21420
21421         This gives us a nice 2% speedup in mcs bootstrap.
21422
21423         * mini-x86.c (peephole_pass): Peephole pass to make
21424         mov  [foo], eax
21425         push [foo]
21426
21427         into
21428
21429         mov [foo], eax
21430         push eax
21431
21432         * mini.c (ip_in_bb): new method.
21433         (mono_method_to_ir): use this method rather than doing the hash
21434         lookup ourselves.
21435
21436         * linear-scan.c (mono_linear_scan): When expiring actives, you
21437         don't need to keep around variables that expire on this
21438         instruction. This makes it so that:
21439              a = b + 1
21440         will turn into:
21441              store (ebx add (ebx, 1))
21442         which will become
21443              add ebx, 1
21444
21445 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21446
21447         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21448         combination to avoid doing two copies. Fix up problems with previous
21449         patch.
21450
21451         * mini.c: Fix 64 bit warnings.
21452
21453         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21454
21455 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21456
21457         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21458         changes from the x86 code.
21459
21460         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21461
21462 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21463
21464         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21465         throwing code to reduce its size, unify the AOT and non-aot code and 
21466         get rid of relocations in the AOT case.
21467
21468         * mini-x86.h mini.c exceptions-x86.c 
21469         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21470         raise corlib exceptions which doesn't require relocations in the 
21471         caller.
21472
21473         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21474
21475 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21476
21477         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21478         needed.
21479
21480         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21481         in the AOT case.
21482
21483 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21484
21485         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21486         with add function when used from Inc/dec atomic 
21487         functions. Re-enabled optimization on x86.
21488         * mini-ops.h: renamed atomic_add functions to
21489         allow _add to match the Interlocked::Add and
21490         _add_next to match Interlocked::Inc/Dec.
21491
21492 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21493
21494         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21495         linking of BBs to the end BB, and enabled SSAPRE also with
21496         consprop and copyprop (which was prevented by that bug).
21497
21498 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21499
21500         * mini-x86.c: disabling the Interlocked optimizing code. 
21501
21502 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21503
21504         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21505         file version check.
21506         
21507 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21508
21509         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21510         interlocked optimization due lack of support on x86, rewrote 
21511         exchange to take into account that base may be in eax.
21512         
21513         xsp works again; activated Interlocked optimizing code.
21514         
21515 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21516
21517         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21518
21519 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21520
21521         * mini-ops.h: Add new opcodes.
21522
21523         * mini.h: Add new patch types. Add got_var to MonoCompile.
21524
21525         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21526         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21527         make it work with all kinds of patchable code.
21528
21529         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21530         address of the GOT, and referencing entries in the GOT.
21531
21532         * mini.c: Add code to load the GOT address if needed by an opcode.
21533
21534         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21535         independent AOT code on the x86 using an elf-style Global Offset Table.
21536
21537 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21538
21539         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21540
21541 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21542
21543         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21544         when running xsp.
21545
21546 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21547
21548         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21549         of Interlocked:Increment/Decrement/Add as inline ops.
21550         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21551
21552 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21553
21554         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21555         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21556
21557 2004-12-12  Duncan Mak  <duncan@ximian.com>
21558
21559         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21560         again. `patch_info->table_size' is no longer valid after Zoltan's
21561         commit #37636.
21562
21563 2004-12-12  Martin Baulig  <martin@ximian.com>
21564
21565         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21566         if we are the "real" method, ie. not an inlined method inside it.
21567
21568 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21569
21570         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21571         before we look in the special fields table. This fixes
21572         ../tests/thread-static-init.cs.
21573
21574 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21575
21576         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21577         for Array get_Rank and get_Length. Fixes bug #70465.
21578
21579 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21580
21581         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21582         separate structure to reduce the size of MonoJumpInfo.
21583
21584 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21585
21586         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21587
21588 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21589
21590         * mini.c (mini_get_inst_for_method): Changed to allow ports
21591         to return a MonoInst instead of opcode 
21592         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21593         
21594         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21595         Allow ports to return a created MonoInst instead of op-code, will enable
21596         new optimizations.
21597         (renamed mini_get_opcode_for_method to better reflected the functionality)
21598
21599 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21600
21601         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21602
21603 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21604
21605         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21606         Fixes #69985.
21607
21608 2004-12-08  Martin Baulig  <martin@ximian.com>
21609
21610         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21611         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21612
21613 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21614
21615         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21616         correctly.
21617
21618         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21619         arithmetic.
21620
21621 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21622
21623         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21624
21625 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21626
21627         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21628         bug introduced by the previous patch.
21629
21630 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21631
21632         * mini-ppc.c, objectc.cs: handle large structs passed by value
21633         (fixes bug #69972).
21634
21635 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21636
21637         * mini-ppc.c: OP_ARGLIST implementation from
21638         Geoff Norton  <gnorton@customerdna.com>.
21639
21640 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21641
21642         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21643         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21644
21645 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21646
21647         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21648
21649 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21650
21651         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21652         support.
21653
21654 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21655
21656         * mini-sparc.c: Zero out localled-ed memory.
21657
21658         * iltests.il: Add tests for zeroing out localloc-ed memory.
21659
21660 2004-12-04  Martin Baulig  <martin@ximian.com>
21661
21662         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21663         mono_method_get_signature_full().       
21664
21665 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21666
21667         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21668         and some utility functions (always for SSAPRE), integrated SSAPRE.
21669         * mini.h: Likewise.
21670         * driver.c: Added ssapre option.
21671         * ssa.c: Small fix on OP_ARG handling.
21672         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21673         * Makefile.am: Likewise.
21674
21675 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21676
21677         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21678         now in the xp code.
21679
21680         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21681         icall.
21682
21683 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21684
21685         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21686         
21687         * cpu-s390.md : Increase instruction length of oparglist.
21688
21689         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21690
21691 2004-11-30  Martin Baulig  <martin@ximian.com>
21692
21693         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21694         virtual generic methods.  We call a special helper_compile_generic_method()
21695         icall to retrieve the method from the vtable, inflate and compile
21696         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21697
21698         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21699
21700 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21701
21702         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21703
21704 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21705
21706         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21707         Fixes #69929.
21708
21709 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21710
21711         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21712         platforms with PIC aot.
21713
21714 2004-11-28  Martin Baulig  <martin@ximian.com>
21715
21716         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21717         Fixes gen-112.cs.
21718
21719 2004-11-28  Martin Baulig  <martin@ximian.com>
21720
21721         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21722         the result of mono_type_get_underlying_type() to check whether
21723         we're byref.
21724
21725 2004-11-26  Martin Baulig  <martin@ximian.com>
21726
21727         * mini.c
21728         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21729         in the g_assert().
21730
21731 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21732
21733         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21734         the same way as the other arguments so they won't get clobbered.
21735
21736         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21737         calls through R11 since it is clobbered by the trampoline code.
21738
21739 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21740
21741         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21742         pick up in-tree mscorlib.dll.
21743
21744 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21745
21746         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21747
21748         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21749         runtime data/code are now stored in a table similar to the GOT in ELF. 
21750         This allows the code itself to be position independent.
21751
21752         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21753         loading changes.
21754
21755         * aot.c: Attach ELF type (object/function) directives to all global
21756         symbols.
21757
21758         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21759
21760         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21761
21762         * mini-amd64.h: Turn on PIC AOT code.
21763
21764         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21765         returning the offset within an OP_AOTCONST instruction where the GOT
21766         offset needs to be added.
21767
21768         * mini.h: Bump AOT file format version.
21769
21770 2004-11-25  Martin Baulig  <martin@ximian.com>
21771
21772         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21773         uninflated generic methods.
21774
21775 2004-11-25  Martin Baulig  <martin@ximian.com>
21776
21777         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21778
21779 2004-11-24  Martin Baulig  <martin@ximian.com>
21780
21781         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21782         original klass (this only applies for generic instances).
21783
21784 2004-11-24  Martin Baulig  <martin@ximian.com>
21785
21786         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21787         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21788         that array).
21789
21790 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21791
21792         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21793         localloc. Fixes #69678.
21794
21795         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21796         
21797 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21798
21799         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21800         used SSE registers on pinvoke calls. Fixes #69774.
21801
21802 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21803
21804         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21805         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21806
21807 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21808
21809         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21810         Refer directly to the mcs/ tree.
21811
21812 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21813
21814         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21815         Check if a trampoline for a synchronized method is required. 
21816
21817 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21818
21819         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21820         with localloc if needed. Throe arithmetric exception in
21821         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21822         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21823
21824 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21825
21826         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21827         types before switching on type.  Fixes #69622.
21828
21829 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21830
21831         * Makefile.am (check-local): New.  Integrate into 'make check'.
21832         (MCS,RUNTIME): Define using in-tree mono and mcs.
21833         (ILASM): New.
21834         (%.exe): Use $(ILASM).
21835
21836 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21837
21838         * mini-ppc.c: adjust initial prolog size (bug #69691).
21839
21840 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21841
21842         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21843         #69664.
21844
21845 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21846
21847         * Makefile.am (clean-local): Rename from 'clean'.
21848
21849 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21850
21851         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21852         to mono_arch_is_int_overflow. 
21853         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21854         SIGFPE events.
21855
21856 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21857
21858         * declsec.c|h: New files to support declarative security attributes.
21859         Added function to check if a method has (applicable) security.
21860         * mini.c|h: Add check for declarative security attributes in
21861         mono_method_check_inlining.
21862         * Makefile.am: Added declsec.c and declsec.h to the build.
21863
21864 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21865
21866         * mini.c, mini.h: update to keep dynamic code info per-domain.
21867
21868 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21869
21870         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21871         (mini_init): Get rid of it from here too.
21872
21873 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21874
21875         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21876         implemented OP_RETHROW (patch by Geoff Norton
21877         <gnorton@customerdna.com>).
21878
21879 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21880
21881         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21882         between appdomains.  Fixes appdomain-unload on PPC.
21883
21884 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21885
21886         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21887         mini-exceptions.c: handle the new wrapper types.
21888         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21889         token value as a MonoClass* when compiling a wrapper.
21890         mono_jit_create_remoting_trampoline now takes an additional
21891         MonoRemotingTarget parameter.
21892         
21893 2004-11-10  Martin Baulig  <martin@localhost>
21894
21895         * mini.c (mono_method_to_ir): Use `generic_container->context'
21896         rather than creating a new one.
21897
21898 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21899
21900         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21901
21902         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21903
21904 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21905
21906         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21907         the experimental aot cache stuff.
21908
21909 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21910
21911         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21912         mini-exceptions.c: update to exception clause structure changes.
21913
21914 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21915
21916         * exceptions-x86.c (throw_exception): Fix warnings.
21917
21918         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21919         for OP_RETHROW.
21920
21921 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21922
21923         * exceptions-sparc.c (get_throw_exception): Really fix this.
21924
21925 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21926
21927         * tramp-*.c: we no longer support icalls without wrappers, so
21928         a bit of code can be removed here
21929
21930 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21931
21932         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21933         patch.
21934
21935         * cpu-sparc.md: Add op_rethrow.
21936
21937         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21938
21939         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21940
21941         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21942         * mini-ops.h: Add OP_RETHROW.
21943
21944         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21945
21946         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21947
21948 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21949         
21950         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21951         Makes the output much easier to read
21952
21953 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21954
21955         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21956         prevents another huge leak when compiling with ssa. Secondly, the
21957         performance of doing this rather than freeing the lists is much
21958         better. GList does a lock every time you allocate a list link,
21959         so that it can use a memory pool. So, it is better to just use
21960         a memory pool of our own.
21961         
21962         * ssa.c, linear-scan.c: replace g_list_remove_link with
21963         g_list_delete.  The remove one does not free the GList, so we were
21964         leaking memory. On -O=all --compile-all with corlib, this cut down
21965         3 MB of allocations.
21966
21967 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21968
21969         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21970
21971         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21972
21973         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21974         into a new function mono_create_jit_trampoline ().
21975
21976 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21977
21978         * trace.c (get_spec): Allow tracing of classes without a namespace.
21979
21980 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21981
21982         * mini.c: Fix pointer overwrite in mini_method_compile.
21983
21984 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21985
21986         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21987         The darwin ABI needs some special handling for 1 and 2 byte structs
21988         Lets use lbz/lhz instead of lwz everywhere.
21989         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21990         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21991         Use stb/sth for the former, and put the latter always on stack instead of in
21992         argument registers.
21993
21994 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21995
21996         * trace.c (is_filenamechar): Add '_'.
21997
21998 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21999
22000         * mini-s390.c: Fix prolog length to allow for large trace requirements.
22001
22002         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
22003
22004 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
22005
22006         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
22007         depends on libmonogc. Fixes #68805.
22008
22009 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
22010
22011         * mini.c (mono_jit_free_method): Provide extra information for
22012         this error.  Currently this leaks, but will be turned into a
22013         developer option in the future.
22014
22015 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
22016
22017         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
22018
22019 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
22020
22021         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
22022         boundary. Fixes reading of PATCH_INFO_R4 and R8.
22023         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
22024
22025 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
22026
22027         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
22028         trampolines for AOT code.
22029
22030 2004-10-22    <vargaz@freemail.hu>
22031
22032         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
22033         constructed types. Fixes #68136.
22034
22035 2004-10-21  Martin Baulig  <martin@ximian.com>
22036
22037         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
22038         if it returns true, unwind the stack to the call instruction.
22039
22040 2004-10-21    <vargaz@freemail.hu>
22041
22042         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
22043
22044         * mini.h: Bump AOT version number.
22045
22046         * objects.cs: Add another test for unbox trampolines.
22047
22048         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
22049         valuetype methods.
22050
22051 2004-10-20    <vargaz@freemail.hu>
22052
22053         * driver.c: Add SHARED to the set of optimizations tested.
22054
22055         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
22056
22057         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
22058         used by CEE_NEWARR.
22059
22060         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
22061
22062 2004-10-20  Martin Baulig  <martin@ximian.com>
22063
22064         * mini-exceptions.c (mono_handle_exception): Call
22065         mono_debugger_handle_exception() to tell the debugger about
22066         catch/finally clauses.
22067
22068 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
22069
22070         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
22071
22072         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
22073         #68447.
22074
22075 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
22076
22077         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
22078         methods as their native size, fixed bug #57543, #57545.
22079         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
22080         This saves a temporary register and mullw call down into 1 (minor perf
22081         increase for cases like sum = sum * 5;  This use to translate into:
22082             li r11,5
22083             mullw r28,r28,r11
22084         It now translates to
22085             mulli r28,r28,5
22086
22087 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
22088
22089         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
22090         #68388.
22091
22092 2004-10-11  Martin Baulig  <martin@ximian.com>
22093
22094         * mini.c (mono_method_to_ir): If we're a generic method, get the
22095         MonoGenericContainer from our MonoMethodNormal and create a
22096         MonoGenericContext from it.
22097
22098 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
22099
22100         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
22101
22102         * basic-long.cs: Add test for checked i8->i2 cast.
22103
22104 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22105
22106         * inssel-ppc.brg: added a couple of speedup rules.
22107
22108 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
22109
22110         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
22111         to speed up rebuilds.
22112
22113 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22114
22115         * mini-s390.c: Minor fix to OP_OR_IMM.
22116
22117 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
22118
22119         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
22120         better. Fixes appdomain-unload.exe on sparc.
22121
22122 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
22123
22124         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
22125         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
22126         see bug 67324.
22127
22128 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
22129
22130         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
22131
22132 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
22133
22134         * mini.c: Always generate a field read/write wrapper for members
22135         of the class MarshalByRefObject since the actual instance could
22136         be a CBO.
22137
22138 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
22139
22140         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
22141
22142 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
22143
22144         * driver.c mini.h trace.c: Move the setting of the main assembly into
22145         a separate function called mono_trace_set_assembly () and call it after
22146         actually loading the main assembly. Fixes #66872.
22147
22148 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
22149
22150         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
22151         using the code manager.
22152
22153 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
22154
22155         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
22156
22157 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
22158
22159         * cpu-amd64.md: Fix bug in previous patch.
22160         
22161         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
22162         #66650.
22163
22164 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
22165
22166         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22167         mini-exceptions.c: updates for changed stack walk interface.
22168
22169 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22170
22171         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
22172
22173 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
22174
22175         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
22176
22177 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
22178
22179         * driver.c (mini_regression_list): Do not call mono_assembly_close 
22180         since assemblies can't be unloaded.
22181         
22182 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22183
22184         * cpu-amd64.md: Fix more instruction lengths.
22185
22186         * cpu-amd64.md: Fix lengths of some instructions.
22187
22188 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
22189
22190         * inssel.brg: Make the array ldelema check aot friendly.
22191
22192 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22193
22194         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
22195
22196         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
22197
22198 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
22199
22200         * mini-x86.c: Fix build.
22201
22202         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
22203         mono_type_get_underlying_type () helper function to simplify code.
22204         
22205 2004-09-09  Martin Baulig  <martin@ximian.com>
22206
22207         * mini-amd64.c: Don't access `type->data.klass' directly, call
22208         mono_class_from_mono_type() instead since the type may be a
22209         generic instance.
22210
22211 2004-09-09  Martin Baulig  <martin@ximian.com>
22212
22213         * mini-amd64.c (get_call_info): Fix support for generic instances.
22214         (add_valuetype): Use mono_class_from_mono_type() to get the class
22215         since we can be a generic instance.
22216
22217 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
22218
22219         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22220
22221 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22222
22223         * liveness.c: reset spill costs on each scan: bug 62107
22224
22225 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22226
22227         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22228         unnecessary line that doesn't compile
22229
22230 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22231
22232         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22233         trampolines, make them call an error function so people can fix their
22234         code.
22235
22236 2004-09-06  Martin Baulig  <martin@ximian.com>
22237
22238         * mini.c (mono_method_to_ir): When initializing locals, handle a
22239         generic instances like a valuetype if it's a valuetype and like a
22240         class if it's a class.
22241
22242 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22243
22244         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22245         stack. Fixes #64674.
22246
22247         * exceptions.cs: Add test for unwinding of call arguments.
22248
22249 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22250
22251         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22252         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22253         set the carry/borrow flag). The sparc and s390 implementations
22254         can now use optimized versions (and simplify the code). ppc bugfixes.
22255
22256 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22257
22258         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22259
22260 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22261
22262         * inssel-amd64.brg: Remove leftover 32 bit rule.
22263
22264         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22265
22266 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22267
22268         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22269         mono_arch_find_jit_info functions into a new function. Fix a memory
22270         leak.
22271
22272         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22273         refactored code.
22274         
22275 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22276
22277         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22278         as well.
22279         
22280         * exceptions.cs: Add array size tests.
22281
22282         * mini.c: Allocate a separate icall wrapper for each arity of 
22283         mono_array_new_va. Fixes #59509.
22284
22285         * exceptions.cs: Add testcase for 64578.
22286
22287         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22288
22289         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22290         
22291 2004-09-02  Martin Baulig  <martin@ximian.com>
22292
22293         * mini.c (mono_method_to_ir): When initializing the locals, call
22294         handle_initobj() on the generic instance itself, not its
22295         underlying type.
22296
22297 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22298
22299         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22300         MonoJitInfo for dynamic methods.
22301
22302         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22303
22304         * mini.c: Add support for freeing JIT data for dynamic methods.
22305         
22306 2004-09-01  Martin Baulig  <martin@ximian.com>
22307
22308         * mini-x86.c (is_regsize_var): Added support for generic
22309         instances.
22310         (mono_arch_emit_prolog): Make this compile again, use
22311         `x86_push_imm_template (code)'.
22312
22313 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22314
22315         * mini-x86.c: make all push_imm instructions that get
22316         patched always emit the long form
22317
22318 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22319
22320         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22321         in a per-domain hash.
22322
22323         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22324         types.
22325
22326 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22327
22328         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22329         work.
22330         
22331         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22332         work.
22333
22334         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22335         Beginnings of SSE2 support.
22336
22337         * exceptions.cs: Add more tests for checked int<->uint casts.
22338
22339 2004-08-28  Martin Baulig  <martin@ximian.com>
22340
22341         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22342         generic instances.
22343
22344         * mini.c
22345         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22346         Handle generic instances recursively.
22347
22348 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22349
22350         * iltests.il: test for conv.u8 on a constant
22351
22352 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22353
22354         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22355         LCONV_x4 (shrun_32 (membase)).
22356
22357 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22358
22359         * inssel-x86.brg: c&p rules for push/setret of long
22360
22361 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22362
22363         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22364         compare (regvar, base)
22365
22366         * inssel-x86.brg: more burg love
22367
22368         * inssel.brg: more cleanup
22369
22370         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22371
22372 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22373
22374         * basic-long.cs, basic-calls.cs: new tests for optimization.
22375
22376 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22377
22378         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22379         patch.
22380
22381 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22382
22383         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22384         
22385 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22386
22387         * inssel.brg (mini_emit_memcpy): use 
22388         NO_UNALIGNED_ACCESS to disable memcpy optimization
22389
22390 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22391
22392         * mini-amd64.c: Handle generic types in various places.
22393
22394         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22395
22396 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22397
22398         * mini.c (handle_box): Fix warning.
22399
22400         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22401
22402         * mini-amd64.h: Enable the emit_state optimization.
22403
22404         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22405
22406         * mini-amd64.c: Add some new 64 bit peephole opts.
22407
22408         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22409
22410         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22411
22412         * mini-amd64.c: Register allocator fixes.
22413
22414         * mini.c: Add an optimization to emit_state to avoid allocation of new
22415         registers on some platforms.
22416
22417 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22418
22419         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22420
22421         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22422         allocation. Fixes #63085.
22423
22424         * basic-long.cs: Add new regression test.
22425
22426         * mini-amd64.c: Register allocator improvements.
22427
22428 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22429
22430         * mini-amd64.c (read_tls_offset_from_method): Add another code
22431         sequence.
22432
22433         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22434         instruction sequence for nullifying class init trampolines.
22435
22436         * objects.cs: Add new regalloc test.
22437
22438         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22439
22440 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22441
22442         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22443         
22444         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22445         arguments.
22446
22447         * driver.c: Fix profiling after TLS changes.
22448         
22449         * driver.c (mono_main): Set mono_stats.enabled if needed.
22450
22451         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22452         CEE_BOX.
22453
22454 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22455
22456         * mini-x86.c: use a 1 op rather than a 2 op tls access
22457         instruction -> faster.
22458
22459 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22460
22461         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22462         x86 backend.
22463
22464 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22465
22466         * exceptions-sparc.c (throw_exception): fix typo
22467
22468 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22469
22470         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22471         set tree->dreg correctly with tls. Allow any
22472         register to be used.
22473
22474         * mini-x86.c (read_tls_offset_from_method): add new code
22475         generation pattern seen with GCC.
22476
22477
22478 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22479
22480         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22481         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22482         exceptions-sparc.c: fix some performance issues in exception
22483         handling and setting of the stack trace for exceptions that were
22484         already thrown.
22485
22486 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22487
22488         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22489         x86 backend.
22490         
22491         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22492         registers.
22493
22494 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22495
22496         This patch inlines tls access, when possible.
22497         
22498         * mini.h: new arch functions for TLS intrinsics.
22499         All platforms updated with a stub.
22500
22501         * mini.c: use the new intrinsics
22502
22503         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22504         arch specific intrinsic for tls variables
22505
22506 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22507
22508         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22509         under windows.
22510
22511 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22512
22513         * mini.c: thread local allocation
22514
22515 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22516
22517         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22518
22519         * Makefile.am: Link against the static version of libmonogc.
22520         
22521         * Makefile.am: Link the static versions of the convenience libraries
22522         into the mono executable.
22523
22524         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22525
22526 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22527
22528         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22529         on integer overflow.
22530
22531         * mini-amd64.c: Reorganize function call code.
22532
22533         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22534
22535 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22536
22537         * inssel-x86.brg: use xor eax,eax.
22538         
22539         * basic.cs: new tests
22540
22541 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22542
22543         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22544         in exception throwing code.
22545         
22546 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22547
22548         * inssel-x86.brg: use xor esi,esi.
22549
22550 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22551
22552         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22553         can trace methods compiled during mini_init () too.
22554
22555         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22556         CEE_CONV_U4.
22557
22558 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22559
22560         * Makefile.am: static link on x86 (r=zoltan)
22561
22562 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22563
22564         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22565         code since it causes some programs to fail.
22566
22567 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22568
22569         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22570
22571 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22572
22573         * mini.c: ovfops_op_map - add STACK_OBJ case for
22574         CONV_I 
22575         * basic.cs: add test_0_pin_string as test
22576         case for above.
22577
22578 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22579
22580         * Makefile.am: build C# if srcdir != builddir
22581
22582 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22583
22584         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22585         fall-through blocks.
22586
22587 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22588
22589         * driver.c: enable loop by default again and include abcrem in -O=all.
22590
22591 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22592
22593         * iltests.il: Add some localloc tests.
22594
22595         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22596
22597         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22598         Fixes #62574.
22599
22600         * inssel-amd64.brg: Add some optimizations.
22601
22602         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22603         for gcc-3.4.
22604
22605         * Makefile.am: Statically link mono against libmono on AMD64.
22606         
22607         * mini-amd64.c inssel-amd64.brg: Optimizations.
22608
22609 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22610
22611         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22612
22613         * tramp-amd64.c: Patch calling code in trampolines.
22614
22615 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22616
22617         * mini-amd64.c: pinvoke struct passing fixes.
22618
22619 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22620
22621         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22622         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22623
22624 2004-08-05  Duncan Mak  <duncan@ximian.com>
22625
22626         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22627         CEE_LDELEM_ANY.
22628
22629 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22630
22631         * mini-amd64.c (emit_move_return_value): Move return value for normal
22632         calls too.
22633
22634 2004-08-05  Martin Baulig  <martin@ximian.com>
22635
22636         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22637         `type->type'; just modify `type' itself when dealing with enums
22638         and generic instances.
22639         (check_call_signature): Make `simple_type' a `MonoType *'.
22640
22641 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22642
22643         * mini.c: Use OP_PADD to add offsets to addresses.
22644
22645         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22646
22647 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22648
22649         * mini-sparc.c (mono_arch_emit_epilog): fix check
22650         for folding last op into restore instruction
22651
22652 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22653
22654         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22655         helper methods using the code manager.
22656         
22657         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22658
22659         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22660
22661 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22662         
22663         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22664           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22665
22666         * mini-s390.c: fix tail processing
22667
22668 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22669
22670         * mini-ppc.c: mul.ovf.un exception name fix.
22671
22672 2004-08-03  Martin Baulig  <martin@ximian.com>
22673
22674         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22675         instances; before jumping to `handle_enum', also modify `ptype'.
22676
22677 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22678
22679         * cpu-sparc.md: fcall maximal length too small.
22680
22681 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22682
22683         * mini-amd64.c mini.h: Add initial support for passing/returning 
22684         structures to/from pinvoked methods.
22685
22686 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22687
22688         * mini-ppc.c: reg allocator fix.
22689
22690 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22691
22692         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22693
22694         * inssel.brg: Optimize memset on 64 bit machines.
22695
22696         * mini-amd64.c: Fix some vararg cases.
22697
22698 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22699
22700         * mini-s390.c: Corrected macro in emit_float_to_int
22701
22702         * s390-abi.cs: Tests to exercise the s390 ABI
22703
22704 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22705
22706         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22707         caller saved regs.
22708
22709         * basic.cs: Add a test for add.ovf.un.
22710
22711 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22712
22713         * mini-sparc.c: add case for OP_IDIV_UN
22714
22715 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22716
22717         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22718         
22719         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22720
22721 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22722
22723         * basic.cs: regression tests.
22724
22725         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22726         regressions.
22727
22728 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22729
22730         * basic.cs: Add a new test.
22731
22732         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22733         and AOT. Various fixes and optimizations.
22734
22735         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22736
22737 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22738
22739         * mini-ppc.c: make sure temp regs are not used for global reg
22740         allocation.
22741
22742 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22743
22744         * cpu-sparc.md: conv_i8 fix for 64bits
22745
22746         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22747
22748 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22749         
22750         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22751         add opcode for cmp BYTE PTR [eax], imm.
22752
22753         * inssel.brg: Make memcpy and memset takes bases.
22754
22755 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22756
22757         * *-amd64.*: More AMD64 work.
22758         
22759 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22760
22761         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22762         add a compare-not-equal opcode.
22763         
22764 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22765
22766         * mini.c: Use mono_init_from_assembly instead of mono_init.
22767         
22768 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22769
22770         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22771
22772         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22773
22774         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22775
22776         * inssel.brg: 64 bit fixes.
22777
22778         * mini.h (MonoCallInst): Add some AMD64 specific data.
22779
22780         * mini.h: Add some OP_P opcodes.
22781
22782 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22783
22784         * basic.cs: tests for 61797 and 61740
22785
22786 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22787
22788         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22789         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22790
22791 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22792
22793         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22794
22795         * *-amd64*.*: Ongoing AMD64 work.
22796
22797 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22798
22799         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22800
22801         * *-amd64*: Ongoing AMD64 work.
22802
22803         * mini-arch.h: Add AMD64 support.
22804
22805         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22806
22807         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22808
22809         * mini-ops.h: Add new opcodes.
22810
22811         * Makefile.am: Add AMD64 support.
22812
22813         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22814         rules into the inssel-long*.brg files.
22815
22816         * *-amd64.*: Add beginnings of AMD64 backend.
22817
22818 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22819
22820         * mini.c (print_dfn): commenting out the code that prints
22821         the cil. With -O=deadce, this makes -v -v crash.
22822         
22823         * cpu-pentium.md: make checkthis have a length of 2
22824
22825 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22826
22827         * mini-sparc.h: fix implementations of __builtin
22828         functions for Sun compiler for V9.
22829
22830 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22831
22832         * mini.c: use the new stelem.ref wrapper
22833         * exceptions.cs, arrays.cs: new stelem.ref tests
22834
22835 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22836
22837         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22838         new XSP should work with these changes).
22839
22840 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22841         
22842         * inssel-{long32,x86,}.brg: trivial optimizations.
22843         
22844 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22845
22846         * mini.c: load value when emitting box operation in
22847         constrained calls.
22848
22849 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22850
22851         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22852         is one byte shorter than cmp DWORD PTR [eax], 0.
22853
22854 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22855
22856         * inssel-ppc.brg: arguments on the stack are always
22857         relative to the stack pointer (spotted by Neale Ferguson).
22858
22859 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22860
22861         * exceptions-x86.c: delay appending the method name to the trace until
22862         after mono_jit_info_table_find is called, as this gets the real
22863         MonoMethod.
22864
22865 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22866
22867         * aot.c: register roots
22868
22869 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22870
22871         * aot.c : I could just use PLATFORM_WIN32 flag.
22872
22873 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22874
22875         * aot.c : Reverting the previous fix. This time it broke linux build.
22876
22877 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22878
22879         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22880
22881 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22882
22883         * mini.c (handle_stack_args): Remove some more debugging code.
22884         
22885         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22886
22887         * driver.c mini.h aot.c: Allow additional options to be specified with
22888         --aot and pass them to mono_compile_assembly.
22889
22890         * aot.c: Add experimental code to AOT compile all loaded assemblies
22891         on demand and save the code into a cache in the filesystem.
22892
22893         * aot.c: Add support for more wrapper methods.
22894         
22895         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22896         58863.
22897
22898         * cpu-*.md: Remove removed opcodes.
22899
22900         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22901         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22902         related icalls to marshal.c.
22903
22904 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22905
22906         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22907
22908         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22909
22910         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22911
22912 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22913         * liveness.c: If liveness is recomputated we need to reset the information
22914         for each variable. This way, if the liveness range has been narrowed
22915         by optimizations that happened after the last computation, we can return
22916         a smaller range.
22917         
22918         For example, if you have
22919         
22920         {
22921                 int i = 0;
22922                 
22923                 // Tons of code that does not affect i
22924                 
22925                 i = foo ();
22926                 ...
22927         }
22928         
22929         i = 0 is dead code and will be removed by SSA. However, when
22930         linear scan gets to the code, i will still appear to be live
22931         throughout the entire block. This prevents good register allocation.
22932
22933 2004-07-06  Martin Baulig  <martin@ximian.com>
22934
22935         * debug-mini.c (mono_debug_init_method): Allow
22936         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22937         (mono_debug_add_icall_wrapper): New method.
22938
22939         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22940
22941 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22942
22943         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22944         optimization.
22945
22946 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22947
22948         * aot.c (mono_aot_load_method): Fix loading of debug info.
22949
22950 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22951
22952         * aot.c: Add logging support.
22953
22954 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22955
22956         * mini.h: Add prototype for mono_print_method_from_ip.
22957
22958         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22959
22960         * inssel.brg: 64 bit fixes.
22961
22962         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22963         inssel-long32.brg.
22964
22965         * Makefile.am: Add SPARC64 support.
22966
22967 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22968
22969         * aot.c: Fix alignment problems on 32 bit platforms.
22970
22971 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22972
22973         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22974         SPARC64.
22975
22976         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22977         problems.
22978
22979         * mini.h: Bump AOT file version. Some 64 bit fixes.
22980
22981 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22982
22983         * inssel-sparc.brg: Add new rule to avoid register moves.
22984
22985         * inssel.brg: Add ldind_to_load_membase helper function.
22986
22987 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22988
22989         * mini.c: OffsetToStringData intrinsic.
22990         
22991 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22992
22993         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22994
22995         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22996         regression tests.
22997
22998         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22999 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23000
23001         * mini.c: reinstated mono_compile_get_interface_var()
23002         on x86, too, since the change breaks the Gtk# build there as well.
23003
23004 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23005
23006         * driver.c: remove loop from the default optimizations: it seems to
23007         interact badly with some of the other options (see bug #60613).
23008
23009 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
23010
23011         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
23012         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
23013
23014 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
23015
23016         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
23017         vararg-using methods.
23018
23019 2004-06-21  Martin Baulig  <martin@ximian.com>
23020
23021         * mini/mini-exceptions.c
23022         (mono_handle_exception): Added `gpointer original_ip' argument.
23023         After calling mono_unhandled_exception(), call
23024         mono_debugger_unhandled_exception() and if that returns true,
23025         restore the context and return.
23026
23027 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
23028
23029         * mini-ppc.c: prefer the use of relative branches so
23030         they won't need to be patched in aot code (patch from Patrick Beard).
23031
23032 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23033
23034         * aot.c: patch from Patrick Beard to make the output assembly
23035         more correct for the MacOSX assembler. Small tweak to
23036         generate sane images on Linux/PPC, too.
23037
23038 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23039
23040         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
23041         case until bug #59509 is fixed (shows up in #60332).
23042
23043 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23044
23045         * mini.c: make sure the needed wrappers are compiled, too, with
23046         precomp.
23047
23048 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
23049
23050         * driver.c: remove NPTL reference in --version output.
23051
23052 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23053
23054         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
23055         generate valid assembly for the Mach-O assembler.
23056
23057 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23058
23059         * driver.c: don't include abcrem in the all optimization specifier
23060         since it slows down jit compilation too much for now.
23061
23062 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
23063
23064         * mini.c: use BIGMUL only if both operands have the same signage.
23065         * iltests.il: Test for bug 60056. (errors related to signage in
23066         BIGMUL).
23067
23068         r=lupus.
23069
23070 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
23071
23072         * mini.c, aot.c: memory leak fixes.
23073
23074 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23075
23076         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
23077
23078 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
23079
23080         * Makefile.am: remove the -static hack completely, it links in
23081         statically glib as well.
23082
23083 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
23084
23085         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
23086         * exceptions.cs: make it compile with new mcs/csc.
23087
23088 2004-06-03 Massimiliano Mantione <massi@ximian.com>
23089         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
23090         and added relevant test case.
23091
23092 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23093
23094         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
23095         regressions in gtk-sharp.
23096
23097 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
23098
23099         * exceptions.cs: New regression tests.
23100
23101         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
23102
23103 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
23104
23105         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
23106
23107 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
23108
23109         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
23110
23111         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
23112
23113 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
23114
23115         * mini.c (mono_jit_runtime_invoke): Init class in this
23116         method instead of trusting mono_jit_compile_method to
23117         do the work (because wrappers can be in object class)
23118
23119 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
23120
23121         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
23122
23123         * basic-long.cs: New regression test.
23124
23125 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
23126
23127         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
23128         and div/rem checks.
23129
23130 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
23131
23132         * Makefile.am: fix miguel's change to build mono statically against
23133         libmono (track build dependencies).
23134
23135 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23136
23137         * cfold.c: Some glib versions do not have G_MININT32.
23138
23139 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
23140
23141         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
23142         with precision of tan, atan, sin and cos, and implemented related
23143         regressions tests (fixes bug 54467, but one new problem appeared and
23144         is not fixed yet).
23145
23146 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23147
23148         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
23149
23150         * exceptions.cs: Add test for constant folding && division by zero.
23151
23152         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
23153         since driver.c is in libmono too, so the optimization was useless.
23154
23155         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
23156         variable to driver.c so the compiler can emit more efficient code to
23157         access them.
23158
23159 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23160
23161         * Makefile.am: don't distribute generated inssel.[ch] files.
23162
23163 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
23164
23165         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
23166         into the default appdomain. Fixes #58707.
23167
23168         * jit-icalls.c: Remove the broken approximation for truncl, doing
23169         no conversion is better.
23170
23171         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
23172         Fixes #58863.
23173
23174 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23175
23176         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
23177         of the mcrxr instruction which is not available on some processors
23178         even if it's documented to be. Implement add and sub overflow correctly
23179         (still not complete for long unsigned). Speed up icalls a bit.
23180
23181 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
23182
23183         * mini.c (mono_jit_compile_method_with_opt): Make sure that
23184         we run .cctor in the current domain instead of target_domain.
23185         
23186         Fixes bug #58558, .cctor not being called in -O=shared.
23187
23188 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23189
23190         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
23191
23192 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
23193
23194         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
23195         which can be done with an imm8, do it that way.
23196         (mono_arch_output_basic_block): ditto for a jmp
23197         (mono_arch_emit_prolog): Computate maximum offset of a label.
23198
23199 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
23200
23201         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
23202         now tries to allocate prefered physical reg's for virtual
23203         regs. This reduces the number of emited spills/loads with
23204         20-30% on our core assemblies.
23205
23206 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23207
23208         * jit-icalls.c: truncl() is not needed and trunc() is
23209         the correct thing to do anyway (bug #58287).
23210
23211 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
23212
23213         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
23214         if available.
23215
23216 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23217
23218         * driver.c: enable loop optimizations by default.
23219
23220 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23221
23222         * mini-x86.c: fix calc of max loop size when aligning loops start.
23223
23224 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23225
23226         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23227         the stack.
23228
23229 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23230
23231         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23232         should set carry.
23233
23234         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23235
23236         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23237         
23238         * mini.c (inline_method): Allways inline some wrappers even if the cost
23239         is too large. Fixes #58785.
23240
23241         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23242         
23243 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23244
23245         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23246         (crichton@gimp.org). Beginning of support for sparc/linux.
23247
23248         * mini-sparc.c: Optimize retrieval of LMF address.
23249
23250 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23251
23252         * exceptions-ppc.c:  handle alloca in methods with clauses.
23253
23254 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23255
23256         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23257
23258 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23259
23260         * mini.c: Delegate most of the abort signal work to 
23261           mono_thread_request_interruption, which also handles Stop and Suspend
23262           states.
23263
23264 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23265
23266         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23267         supports the save/restore lmf opcodes.
23268
23269 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23270
23271         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23272         by gcc-3.4 as well.
23273
23274         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23275
23276 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23277
23278         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23279         methods which contain array accesses.
23280
23281         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23282         boundaries. Fixes #58537.
23283
23284         * iltests.il: Add regression test for #58537.
23285
23286 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23287
23288         * mini-x86.c (mono_arch_local_regalloc): Last part of
23289         fix for bug #58633 (releasing register to early).
23290
23291 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23292
23293         * basic-long.cs: Add new regression test.
23294
23295 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23296
23297         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23298         register too early on the chain.
23299
23300 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23301
23302         * mini.c (create_helper_signature): Use a helper function to reduce
23303         the code which needs to be written. Also set the calling convention of
23304         icalls on windows. Fixes #57840.
23305
23306 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23307
23308         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23309         exceptions-ppc.c: added helper function to get the instruction address
23310         from a signal handler context.
23311
23312 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23313
23314         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23315         from gonzalo.
23316
23317 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23318
23319         * helpers.c: Add new env variable to pass args to objdump.
23320         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23321
23322 2004-05-17  Radek Doulik  <rodo@ximian.com>
23323
23324         * Makefile.am (common_sources): added abcremoval.h so it get
23325         disted and daily mono packages on go-mono.com will build again
23326
23327 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23328
23329         * abcremoval.c: Fixed coding style, added copyright header.
23330
23331         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23332
23333         * mini.h: Added prototype for abc removal main function.
23334
23335         * build_relations_propagation_table.pl: Added copyright header.
23336
23337 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23338
23339         * basic-long.cs: reg test for complex ceq_long bug.
23340
23341 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23342
23343         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23344         reg in long and clob case (bug #58343). Fixed/added comments.
23345
23346 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23347
23348         * mini.c (mono_jit_runtime_invoke): Follow new convention
23349         of calling the invoke method with an function pointer.
23350
23351 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23352
23353         * ChangeLog: Fix author of memory leak patch.
23354
23355 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23356
23357         * Makefile.am: fix make dist as well...
23358
23359
23360 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23361
23362         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23363         on archs where pointers are 4 bytes long.
23364
23365         * Makefile.am: Added abcremoval.c source file.
23366
23367         * abcremoval.c: Added abcremoval.c.
23368
23369         * abcremoval.h: Added abcremoval.h.
23370
23371         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23372
23373         * inssel.brg: Enabled bounds check removal.
23374
23375         * mini.c: Added support for abcrem optimization.
23376
23377         * mini.h: Added abcrem optimization label.
23378
23379         * driver.c: Added support for abcrem optimization.
23380
23381         * propagated_relations_table.def: Added propagated_relations_table.def.
23382
23383 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23384
23385         * mini.c, cfold.c: fix style.
23386
23387 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23388
23389         * mini.c: handle issue with the low-level implementation of
23390         some long opcodes (bug #54209).
23391
23392 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23393
23394         * basic.cs: test for my new cmov stuff.
23395
23396 2004-05-13      Patrik Torstensson
23397
23398         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23399         opt and added peephole documentation.
23400
23401 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23402
23403         * tramp-ppc.c: rewrote the generic trampoline code.
23404
23405 2004-05-11      Patrik Torstensson
23406
23407         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23408
23409 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23410
23411         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23412
23413         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23414         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23415
23416         * mini.c: Add new icalls for AsAny marshalling.
23417
23418 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23419
23420         * tramp-ppc.c, mini-ppc.c: more cleanups.
23421
23422 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23423
23424         * mini.c: no warnings.
23425
23426 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23427
23428         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23429
23430 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23431
23432         * mini.c: In the thread abort signal handler, if the thread is in the
23433         process of being stoped, don't throw the Abort exception, just stop the
23434         thread.
23435
23436 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23437
23438         * tramp-ppc.c: removed old code.
23439
23440 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23441
23442         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23443         do some simple speed optimizations on ppc.
23444
23445 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23446
23447         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23448         and large offsets in load/store.
23449
23450 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23451
23452         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23453         it causes regressions.
23454
23455 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23456
23457         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23458         support.
23459
23460 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23461
23462         * jit-icalls.c: remove warnings.
23463         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23464         speedups for unsafe code.
23465
23466 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23467
23468         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23469
23470 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23471
23472         * basic-calls.cs: Add new regression test.
23473
23474         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23475         more portable.
23476
23477         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23478
23479         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23480         is no longer used.
23481
23482 2004-05-06      Patrik Torstensson
23483
23484         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23485         long reg allocation in any reg (not only eax:edx) and implemented 
23486         long shl/shr ops in asm instead of helpers.
23487
23488 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23489
23490         * mini-sparc.h: Fix warnings.
23491
23492         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23493         stack.
23494
23495         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23496         separate statement for clarity.
23497
23498         * mini-sparc.c: Update status.
23499
23500 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23501
23502         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23503         here.
23504
23505 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23506
23507         * inssel-ppc.brg: another small pre-release workaround:
23508         we don't do overflow detection for long_sub_un.
23509
23510 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23511
23512         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23513         (also works around a weird ppc bug: 57957).
23514
23515 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23516
23517         * tramp-ppc.c: trampoline fixes.
23518
23519 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23520
23521         * mini-ppc.c: fixed typos.
23522
23523 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23524
23525         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23526         at the top of the stack. Fixed typos. Use a frame registers
23527         for all the methods with exception clauses.
23528
23529 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23530
23531         * exceptions-ppc.c: restore fp registers.
23532
23533 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23534
23535         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23536         order from the stack top (moved the stack room to save the
23537         return value for trace after the param area). Fixed corruption
23538         in restoring registers on unwind.
23539
23540 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23541
23542         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23543
23544 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23545
23546         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23547         and prolog/epilog for methods that use it. Allow
23548         enough param area room for varargs methods. Fix miguel's
23549         breakage in exception handling.
23550
23551 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23552
23553         * Makefile.am: run genmdesc only on current arch.
23554
23555 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23556
23557         * exceptions-x86.c:
23558         * mini-x86.h: fix the build on windows.
23559
23560 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23561
23562         * 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.
23563
23564         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23565
23566         * mini-exceptions.c: New file.
23567         
23568         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23569         Move some parts of the x86 exception handling code to an 
23570         arch-independent file so it can be shared with other ports.
23571
23572 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23573
23574         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23575
23576 2004-04-26  David Waite  <mass@akuma.org>
23577
23578         * driver.c: remove comma from end of enumeration declaration
23579
23580 2004-04-26  Jackson Harper  <jackson@ximian.com>
23581
23582         * driver.c: parse config file before loading first assembly. This
23583         allows the user gac to be enabled/disabled. 
23584         
23585 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23586
23587         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23588         simpler mechanism: we do not care what is encoded initially
23589         (branch absolute or relative), we care about the code and its
23590         target.  I kept the old code for reference for now.
23591
23592         The new code tries first to determine if the jump is anywhere in
23593         the -/+32 absolute meg range, if it succeeds, it encodes using the
23594         absolute branch;  If not, it tried to find something in the
23595         relative range, if not, it uses the handle_thunk code. 
23596
23597 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23598
23599         * exceptions-ppc.c: use the correct ip register on macosx.
23600
23601 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23602
23603         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23604
23605 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23606
23607         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23608         Raise exception on integer divide by zero by hand since the hw
23609         doesn't support it. Handle NaNs in FP compares.
23610
23611 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23612
23613         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23614         code reducing duplication between the platforms and enabled
23615         signal exception handling (on linux for now).
23616
23617 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23618
23619         * exceptions-ppc.c: more macosx support.
23620
23621 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23622
23623         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23624
23625 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23626
23627         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23628
23629 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23630
23631         * iltests.il: more tests.
23632
23633 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23634
23635         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23636         vars as well.
23637
23638 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23639
23640         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23641
23642 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23643
23644         * liveness.c: Mark variables as volatile in all basic blocks reachable
23645         from exception clauses.
23646
23647 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23648
23649         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23650         inlining.
23651
23652 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23653
23654         * iltests.il, basic.cs: more tests for regalloc.
23655
23656 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23657
23658         * iltests.il: Some tests for register allocation modifications
23659         I have locally.
23660
23661 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23662
23663         * exceptions.cs: Add regression test for bug #56782.
23664
23665         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23666         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23667         the beauty of fixing the same thing in 5 different files...
23668
23669 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23670
23671         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23672         methods.
23673
23674 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23675
23676         * mini.c: Add support for STRWLPARRAY marshalling convention.
23677
23678 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23679
23680         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23681         to init the context to setup the regs pointer).
23682
23683 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23684
23685         * exceptions-ppc.c: more exceptions work.
23686
23687 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23688
23689         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23690         not allowed.
23691
23692 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23693
23694         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23695         can use the memory directly.
23696
23697         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23698
23699         add x86_add_membase, x86_sub_membase, x86_mul_membase
23700
23701 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23702
23703         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23704         GENERAL_REGS they were also hardcoded for all PPC ports.
23705
23706         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23707
23708         Remove hard-coded limit for floating point registers, use
23709         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23710
23711         Notice that in MacOS X calling conventions you can fit a lot more
23712         floating point values in registers, so I should update the PInvoke
23713         test to excercise the passing of floating point values on the
23714         stack (currently broken).
23715         
23716 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23717
23718         * tramp-ppc.c (create_trampoline_code): Added
23719         JUMP_TRAMPOLINE_SIZE. 
23720         (ppc_magic_trampoline): Follow the pattern from
23721         x86_magic_trampoline: if code is set to zero, return. 
23722         (create_trampoline_code): Always pass MonoMethod to the jump
23723         trampoline, before it was passing a null.
23724         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23725         share the code with mono_arch_create_jit_trampoline. 
23726
23727         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23728         implemented.
23729         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23730         implemented.  
23731
23732         * cpu-g4.md: Added length for jmp instruction, the worst case
23733         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23734         for save_lmf).
23735
23736 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23737
23738         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23739
23740 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23741
23742         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23743         before each IL instruction.
23744
23745         * mini.c (CEE_BOX): Fix warnings.
23746
23747 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23748
23749         * mini.c: removed a few unused vars and extra whitespace.
23750
23751 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23752
23753         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23754         checks.
23755         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23756         index.
23757         (OP_GETCHR): use the above
23758         (CEE_LDELEMA): use the above.
23759
23760         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23761         version of the generic impl.
23762         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23763         (CEE_LDELEMA): use the above.
23764
23765 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23766
23767         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23768         Fixes #56317.
23769
23770         * iltests.il: Added new regression test for #56317.
23771
23772 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23773
23774         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23775         under NetBSD. Fixes #56450.
23776
23777         * liveness.c (update_gen_kill_set): Fix previous patch.
23778
23779 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23780
23781         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23782
23783 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23784
23785         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23786         ldsfld and ldsflda.
23787
23788         * inssel-sparc.brg: Add more optimizations.
23789
23790         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23791
23792 2004-04-01  Martin Baulig  <martin@ximian.com>
23793
23794         * mini.c (handle_box): New static function; moved the
23795         implementation of CEE_BOX here.
23796         (mono_method_to_ir): Added `constrained_call' variable.
23797         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23798         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23799         mono_method_get_constrained() to get the method.
23800
23801 2004-04-01  Martin Baulig  <martin@ximian.com>
23802
23803         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23804         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23805         (mono_method_to_ir): We don't need these macros anymore since
23806         mono_class_get_full() already takes care of it. 
23807
23808 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23809
23810         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23811         use @function (as doesn't accept #function here) and check the return
23812         value of system and stop if fails.
23813
23814 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23815
23816         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23817
23818 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23819
23820         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23821
23822         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23823
23824         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23825         #56223.
23826
23827         * basic-long.cs: Add test for negation of Int64.MinValue.
23828
23829 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23830
23831         * mini-sparc.c: Update status.
23832
23833         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23834
23835         * exceptions-sparc.c: Fix return value in filters.
23836
23837         * inssel-sparc.brg: Fix register allocation in some rules.
23838
23839 2004-03-28  Martin Baulig  <martin@ximian.com>
23840
23841         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23842         if neccessary.  
23843
23844 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23845
23846         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23847         
23848         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23849         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23850         remove unused conv_u4 opcode.
23851
23852         * mini-x86.c: Remove valgrind workaround since it slows down things
23853         even when mono is not run under valgrind.
23854
23855 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23856
23857         * mini-sparc.c: Update status.
23858
23859         * inssel-sparc.brg: Add some optimizations.
23860
23861         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23862         future delay slot filling. Add support for varargs, tail calls and JMP.
23863
23864         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23865         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23866
23867         * inssel.brg: Fix register allocation in OP_ARGLIST.
23868
23869         * inssel.brg: Fix warnings.
23870
23871 2004-03-25  Martin Baulig  <martin@ximian.com>
23872
23873         * mini.c (inflate_generic_field): Removed.
23874         (mini_get_method): Removed, use mono_get_method_full(),
23875         (mini_get_class): Removed, use mono_class_get_full().
23876         (mono_method_to_ir): Pass our generic context to
23877         mono_field_from_token().        
23878
23879 2004-03-25  Martin Baulig  <martin@ximian.com>
23880
23881         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23882         of a `MonoMethod *'.
23883         (mini_get_method): Take a `MonoGenericContext *' instead
23884         of a `MonoMethod *'.
23885         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23886         a new local variable called `generic_context' which holds the
23887         current `MonoGenericContext *'; use it to lookup things.
23888
23889 2004-03-24  Martin Baulig  <martin@ximian.com>
23890
23891         * mini.c (mini_get_class): New static method; if we're inside a
23892         generic instance, inflate the class if neccessary.
23893         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23894
23895 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23896
23897         * iltests.il: New regression test for #55976.
23898
23899         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23900         #55976.
23901
23902 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23903
23904         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23905         output.
23906
23907 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23908
23909         * liveness.c: Consider SSA stores as well as loads when making vars
23910         volatile.
23911
23912         * exceptions.cs: New regression tests for register allocation.
23913         
23914 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23915
23916         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23917         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23918           domain lock only to protect puntual access to data structures.
23919           Added access lock for sighash, jit_icall_hash_name, 
23920           jit_icall_hash_addr and domain->code_mp.
23921
23922 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23923
23924         * driver.c: Print SIGSEGV handling method.
23925
23926         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23927
23928         * mini.c (setup_jit_tls_data): Handle case when this is called
23929         multiple times for a thread.
23930
23931         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23932         is different from fbxx_un. Fixes #54303. Also use constants instead of
23933         magic numbers in a lot of places.
23934
23935 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23936
23937         * exceptions.cs: Fix cctor test when --regression is used.
23938
23939 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23940
23941         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23942         for Linux/ppc.
23943
23944 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23945
23946         * inssel-ppc.brg: fixed register assignments for some rules.
23947
23948 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23949
23950         * exceptions.cs: Add test for exceptions in static constructors.
23951
23952         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23953         static constructors outside the domain lock. Fixes #55720.
23954
23955 2004-03-17  Martin Baulig  <martin@ximian.com>
23956
23957         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23958         (inflate_generic_field): Take the `MonoMethod *' instead of the
23959         `MonoClass *' and added support for generic method.
23960         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23961         have a `field->parent->gen_params', only inflate the field if it's
23962         an open constructed type.
23963
23964 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23965
23966         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23967         exception object instead of the preconstructed ones.
23968
23969 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23970
23971         * mini.c: reverted changed to sigsegv_signal_handler commited
23972         accidentally in the previous patch.
23973
23974 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23975
23976         * mini.c:
23977         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23978         running --aot with an old assembly.
23979
23980 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23981
23982         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23983         point values.
23984
23985         * mini-sparc.c: Add support for v9 branches with prediction.
23986
23987 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23988
23989         * mini.c (mini_init): #warning is GNUC only
23990
23991         * mini-sparc.h: implement __builtin_frame_address
23992         and __builtin_return_address for Sun C compiler
23993
23994 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23995
23996         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23997
23998 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23999
24000         * basic-calls.cs: Add test for unaligned byref long argument passing.
24001
24002         * mini-ops.h: Add sparcv9 compare and branch instructions.
24003
24004         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
24005         v9 instructions if we have a v9 cpu.
24006
24007         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
24008         registers for global allocation.
24009
24010         * exceptions-sparc.c: Fixes.
24011         
24012 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
24013
24014         * liveness.c (mono_analyze_liveness): Optimized version.
24015
24016         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
24017
24018         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
24019         sparc work.
24020
24021         * basic-float.cs basic-calls.cs: New regression tests.
24022
24023 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
24024
24025         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
24026         sigaltstack implementation.
24027
24028         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
24029         
24030         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
24031         stuff if SIGSEGV_ON_ALTSTACK is not defined.
24032
24033 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
24034
24035         * mini.c: Fix warnings.
24036         
24037         * mini.c (mono_resolve_patch_target): New function which contains the
24038         arch independent part of the patching process.
24039
24040         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
24041         patching code to a separate function.
24042
24043 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
24044
24045         * mini.c (add_signal_handler): ifdef out on Windows
24046
24047 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
24048
24049         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
24050         cpu-sparc.md: Add exception handling support + other fixes.
24051
24052         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
24053         typed GC detection in --version.
24054
24055         * basic.cs exceptions.cs: New regression tests.
24056
24057         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
24058         the arch specific code can store data during a compilation.
24059
24060         * mini-ops.h: Add OP_SETFRET.
24061
24062         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
24063         function, register a separate icall for each arity, so the icalls can
24064         get a wrapper.
24065         
24066         * mini.c (mono_print_tree): Print negative offsets in a more readable
24067         form.
24068         
24069         * mini.c: Make signal handling work on sparc.
24070         
24071         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
24072
24073         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
24074
24075         * jit-icalls.c: Emulate truncl by aintl on solaris.
24076
24077         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
24078
24079 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
24080
24081         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
24082
24083 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
24084
24085         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
24086         a MarshalByRef type, inline a method that performs the check, taking into
24087         account that the object can be a proxy. Also implemented tow new opcodes:
24088         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
24089         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
24090         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
24091
24092 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
24093
24094         * mini-ppc.c: if a relative branch displacement is too big
24095         but it points to and area reachable with an absolute branch, 
24096         avoid the thunks.
24097
24098 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
24099
24100         * mini.c: optimize small copies in cpblk.
24101
24102 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
24103
24104         * basic-calls.cs basic-float.cs: New regression tests.
24105
24106         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
24107         negative offsets from %fp. Implement localloc. Fix local register 
24108         allocation. Fix the case when the this argument needs to be saved to
24109         the stack. Implement some missing opcodes.
24110
24111 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
24112
24113         * mini.c (mini_method_compile): Reenable global regalloc in methods
24114         with exception handlers.
24115
24116         * linear-scan.c (mono_varlist_sort): Fix warning.
24117
24118         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
24119
24120         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
24121         regalloc costs.
24122
24123         * liveness.c: Make all variables uses in exception clauses volatile, to
24124         prevent them from being allocated to registers. Fixes #42136.
24125
24126 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
24127
24128         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
24129         causes regressions.
24130
24131         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
24132         argument to mono_arch_regalloc_cost.
24133
24134         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
24135         precisely.
24136
24137 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
24138
24139         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
24140         Make the cost of allocating a variable to a register arch dependent.
24141
24142         * basic-calls.cs: Fix compilation of tests.
24143         
24144         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
24145         helper function to cut back on the number of #ifdefs needed.
24146
24147         * mini-ppc.c: Fix compilation.
24148
24149         * basic-calls.cs: New regression tests.
24150
24151         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
24152
24153         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
24154         of l0 since that is callee saved.
24155
24156         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
24157         to virtual calls.
24158
24159         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
24160         of delay instruction.
24161
24162         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
24163
24164         * mini.h (MonoCallInst): Add 'virtual' flag.
24165
24166         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
24167
24168 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
24169
24170         * *.cs: New regression tests.
24171
24172         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
24173         work.
24174
24175         * mini.c (mono_runtime_install_handlers): Fix build.
24176
24177         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
24178         'signal_stack_size' members.
24179
24180         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
24181         alternate signal stack.
24182
24183         * exceptions-x86.c: Add stack overflow handling.
24184
24185         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
24186         functions to arch independent code.
24187
24188         * mini.c (mono_print_tree): Print more detailed info for load_membase
24189         opcodes.
24190         
24191 2004-02-23  Martin Baulig  <martin@ximian.com>
24192
24193         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
24194
24195 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
24196
24197         * mini-x86.c: fixed reg allocation for div/rem.
24198
24199 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
24200
24201         * driver.c (mono_main): Report some configuratio options on --version.
24202
24203 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
24204
24205         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
24206         low in the address space. Correctly flush memory in thunks where we
24207         output native code.
24208
24209 2004-02-20  Martin Baulig  <martin@ximian.com>
24210
24211         * mini.c (mini_get_method): New static method; inflate all generic
24212         methods and methods in open generic instances.
24213         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
24214         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
24215
24216 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24217
24218         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
24219
24220         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24221
24222 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24223
24224         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24225
24226         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24227         it compile using Sun's compiler.
24228
24229 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24230
24231         * 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.
24232
24233         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24234
24235 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24236
24237         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24238         code.
24239         * mini-ppc.c: handle calls outside of the allowed range with thunks
24240         allocated using the code manager.
24241         * tramp-ppc.c: use the code manager to hold generated native code.
24242         Fixed the magic trampoline to just patch vtable entries.
24243
24244 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24245
24246         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24247         independent file.
24248
24249 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24250
24251         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24252         PPC.
24253
24254         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24255         if we have a working __thread implementation.
24256
24257         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24258         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24259
24260 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24261
24262         * mini-x86.c: Fix compilation under gcc 2.
24263         
24264 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24265
24266         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24267         contains a call to the wrapped function.
24268
24269         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24270         OP_<CALL>_IMM opcodes, and use them under X86.
24271         
24272         * mini.c (mono_jit_find_compiled_method): Fix warning.
24273
24274         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24275
24276         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24277
24278         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24279         functionality to mini.c.
24280
24281         * mini.c (mono_create_jump_trampoline): New function to create a jump
24282         trampoline. Return a compiled method instead of a trampoline if it
24283         exists. Add a cache for jump trampolines.
24284
24285         * mini.c (mono_jit_find_compiled_method): New function to return a
24286         compiled method if it exists.
24287
24288         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24289         mono_arch_create_jit_trampoline.
24290
24291         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24292         a jump trampoline. Fixes #52092.
24293         
24294 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24295
24296         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24297         which is not up-to-date. Add check_corlib_version () instead.
24298
24299         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24300         have to call it.
24301         
24302         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24303         since newer valgrind versions do not need it.
24304
24305         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24306         compile a method with a given set of optimizations.
24307
24308         * mini.c: Compile icall wrappers on-demand instead of at startup.
24309
24310         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24311         wrapper for an icall.
24312
24313 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24314
24315         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24316         #54063.
24317
24318         * iltests.il: Add test for non-empty stack before switch instruction.
24319
24320 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24321
24322         * mini.c: Add support for new stringbuilder marshalling conventions.
24323
24324         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24325
24326 2004-02-01  Martin Baulig  <martin@ximian.com>
24327
24328         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24329         in `ginst->mtype_argv'.
24330
24331 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24332
24333         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24334         facilitate grepping.
24335
24336 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24337
24338         * mini.c: fixed buglet in initobj generic implementation for references.
24339
24340 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24341
24342         * Makefile.am: make the version script conditional.
24343         * jit-icalls.c: handle missing truncl().
24344
24345 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24346
24347         * exceptions.cs: Add more tests for double->int conversion.
24348
24349         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24350         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24351
24352 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24353
24354         * driver.c: make --verbose --version emit an error
24355         if the loaded corlib doesn't match the runtime version.
24356
24357 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24358
24359         * mini-ppc.h: export ppc_patch().
24360         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24361         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24362         on par or better than on MacOSX.
24363
24364 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24365
24366         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24367         mono_lookup_pinvoke_call.
24368
24369         * mini-x86.c: Under windows, the default pinvoke calling convention is
24370         stdcall. Fixes #52834.
24371
24372         * mini.c (optimize_branches): Add an upper bound to the number of
24373         iterations to prevent infinite loops on strange loops. Fixes #53003.
24374
24375 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24376
24377         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24378         and ISINST. Fixes #52093.
24379
24380         * objects.cs (test_0_vector_array_cast): New tests.
24381         
24382 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24383
24384         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24385         checking in Array.Set ().
24386
24387         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24388         #52590.
24389
24390         * object.cs (test_0_multi_array_cast): New regression test.
24391
24392 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24393
24394         * exceptions-ppc.c: fix build on Linux/PPC.
24395
24396 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24397
24398         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24399         running under valgrind.
24400         (x86_magic_trampoline): Fix build bustage.
24401
24402         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24403         negative values as well. This is needed for the encoding of the line number
24404         info, since sometimes the line numbers are not in increasing order.
24405
24406 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24407
24408         * cpu-pentium.md (localloc): Increase the size of the localloc 
24409         instruction since it is a loop under Win32.
24410
24411         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24412         allocation.
24413
24414 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24415
24416         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24417         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24418         Max Horn (max@quendi.de). Fix file names in comments.
24419
24420 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24421
24422         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24423         avoid stack overflow.
24424         (replace_usage): Avoid uninitialized variable warnings.
24425
24426         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24427         and taking the address of valuetype variables.
24428
24429 2004-01-03  Patrik Torstensson
24430
24431         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24432         for other purposes than FP later on.
24433
24434 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24435
24436         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24437         of tail calls.
24438
24439 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24440
24441         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24442
24443 2003-12-30  Patrik Torstensson <p@rxc.se>
24444
24445         * mini-x86.h: Decreased number of availiable fp regs.
24446         Solves corner cases with FP spilling.
24447
24448 2003-12-23  Patrik Torstensson <p@rxc.se>
24449
24450         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24451         for floating point stack tracking / spilling on x86. 
24452         Fixes bug #49012.
24453         
24454         * basic-float.cs: added float mul overflow test.
24455
24456 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24457
24458         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24459
24460 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24461
24462         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24463         supports for cond branches that overflow the immediate
24464         overflow offset. mcs can compile simple programs.
24465
24466 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24467
24468         * exceptions-ppc.c: exception handling support wip:
24469         finally handlers get run on exception.
24470
24471 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24472
24473         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24474         profiling.
24475
24476 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24477
24478         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24479         initial support for stack walking and unwinding.
24480
24481 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24482
24483         * driver.c (mono_main): Make corlib-out-of-sync message more 
24484         descriptive. Also remove verify_corlib call.
24485
24486 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24487
24488         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24489         not overlap with other call's arguments, too.
24490
24491 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24492
24493         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24494         move to arch-specific code the choice of arch-specific
24495         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24496         * mini.c: ensure emulation calls will not interleave
24497         with other calls.
24498
24499 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24500
24501         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24502         the magic trampoline stack frame is dropped before executing
24503         the new method.
24504
24505 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24506
24507         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24508         and integer to fp conversions. Added support for overflowing
24509         arguments on the stack. Reserve a couple more registers as temps.
24510         Added support for aot compilation (as output still needs to be
24511         tweaked, though).
24512
24513 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24514
24515         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24516         Don't overwrite return register in some corner cases.
24517
24518 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24519
24520         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24521         static constructors when AOT compiling.
24522
24523         * driver.c (mono_main): Call mono_check_corlib_version.
24524
24525 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24526
24527         * cpu-g4.md, basic.cs: fixed div target register.
24528
24529 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24530
24531         * mini-ppc.c, basic.cs: shl_imm fix with test.
24532
24533 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24534
24535         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24536         structures by value. Misc fixes.
24537         * objects.cs: more tests.
24538
24539 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24540
24541         * mini-ppc.c: lconv.ovf.i implemented.
24542
24543 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24544
24545         * mini.c:
24546         (mini_init): don't error out if someone already called g_thread_init.
24547
24548 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24549
24550         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24551         to be any type per the spec. Fix abnormal memory usage when
24552         the same object is repeatedly thrown.
24553
24554 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24555
24556         * mini.c: check for overruns in IL code.
24557
24558 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24559
24560         * TODO: Add/remove some todo entries.
24561
24562 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24563
24564         * driver.c (mono_main): Call mono_verify_corlib.
24565
24566 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24567
24568         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24569         This has been moved to mini.c
24570         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24571         type being casted is marshalbyref it could be a proxy, so instead of
24572         emitting the type check code, emit a call to a runtime method that will
24573         perform the check by calling CanCastTo if needed.
24574
24575 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24576
24577         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24578         methods with large stack frames under Win32.
24579
24580 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24581
24582         * Makefile.am: Distribute regression tests.
24583
24584         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24585         at the end instead of inserting each variable into the sorted list.
24586
24587         * linear-scan.c (mono_varlist_sort): New helper function.
24588         
24589 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24590
24591         * mini.c: ensure arguments and locals are within bounds.
24592
24593 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24594
24595         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24596         related fixes.
24597
24598 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24599
24600         * mini.c (mono_cprop_copy_values): Fix crash.
24601
24602         * aot.c: Set verbosity back to 0.
24603         
24604 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24605
24606         * regalloc.c: complete memory leak fix by Laurent Morichetti
24607         (l_m@pacbell.net).
24608
24609 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24610
24611         * driver.c (main_thread_handler): Revert the previous patch.
24612
24613         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24614         under valgrind.
24615
24616         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24617         memory from the memory pool.
24618
24619         * driver.c (main_thread_handler): Turn on all optimizations when
24620         --aot is used.
24621
24622         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24623         an array for better performance.
24624
24625         * regalloc.c (mono_regstate_assign): Fix memory leak.
24626
24627         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24628         serialize the debug info.
24629
24630         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24631         debug info from the serialized representation.
24632
24633         * aot.c: Save debug info into the generated file and load it when 
24634         loading a method.
24635
24636         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24637
24638 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24639
24640         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24641         More FP-related fixes.
24642
24643 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24644
24645         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24646         and register allocation buglet. Hello world now runs.
24647
24648 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24649
24650         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24651         * tramp-ppc.c: fixed class init trampoline.
24652         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24653
24654 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24655
24656         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24657         mini.c: more ppc changes/fixes.
24658
24659 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24660
24661         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24662         Also optimize the case when the arguments are the same in the caller 
24663         and in the callee.
24664
24665         * iltests.il: Add tests for tail calls with valuetype arguments.
24666
24667 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24668
24669         * mini-ppc.c: fixes for struct return type.
24670
24671 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24672
24673         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24674         mono_spillvar_offset() to arch-specific code.
24675
24676 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24677
24678         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24679
24680 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24681
24682         * exceptions-x86.c: Fix stack space leaks.
24683         
24684         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24685         registers from the lmf if the method has save_lmf set.
24686
24687 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24688
24689         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24690         of icall wrappers into InvokeInDomain, since these are now per-domain.
24691
24692 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24693
24694         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24695         make some opcode emulation and intrinsic ops enabled/disabled 
24696         according to the architecture. More fixes.
24697
24698 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24699
24700         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24701
24702 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24703
24704         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24705         arch-specific handling for 'this' and struct return type to
24706         arch-specific code.
24707
24708 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24709
24710         * aot.c: prevent divide by zero error when reporting (it happened with
24711         Accessibility.dll).
24712
24713 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24714
24715         * mini.h (inst_switch): Remove unused macro.
24716
24717 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24718
24719         * aot.c:
24720         (load_aot_module): free 'info->methods' and 'info' properly. No more
24721         "free(): invalid pointer blah" messages when you have an old aot
24722         compiled assembly.
24723
24724 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24725
24726         * jit-icalls.c, mini.c: Added support for context static fields.
24727
24728 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24729
24730         * mini.c (mono_method_blittable): Methods which set LastError are not 
24731         blittable either. Fixes #51108.
24732         
24733 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24734
24735         * mini.c: flush icache.
24736         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24737
24738 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24739
24740         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24741
24742 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24743
24744         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24745         safe on IA32.
24746
24747         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24748         vararg calls.
24749
24750         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24751
24752 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24753
24754         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24755         instruction when the result is discarded.
24756
24757         * iltests.il (test_0_div_regalloc): New regression test.
24758
24759         * arrays.cs: Fix compilation error.
24760
24761 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24762
24763         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24764         float rules to inssel-x86.brg: sane architectures with FP registers
24765         don't need to implement these rules.
24766
24767 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24768
24769         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24770
24771 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24772
24773         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24774         implementation of 32 bit systems.
24775
24776 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24777
24778         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24779         (Jeroen Zwartepoorte).
24780
24781 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24782
24783         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24784         the caller and the callee matches.
24785         
24786         * mini.c (mono_method_to_ir): Add comment.
24787
24788         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24789         signbit is missing on some platforms.
24790
24791 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24792
24793         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24794
24795         * mini.c (setup_jit_tls_data): Call the new function.
24796         
24797         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24798
24799         * mini-x86.c: Add experimental support for fast access to the lmf
24800         structure under NPTL/Linux 2.6.x.
24801
24802 2003-11-06  Martin Baulig  <martin@ximian.com>
24803
24804         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24805         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24806         the debugger.
24807
24808 2003-11-02  Martin Baulig  <martin@ximian.com>
24809
24810         * mini.c (inflate_generic_field): New static method.
24811         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24812         generic instance and the field is declared in a generic type, call
24813         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24814
24815 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24816
24817         * mini.h mini.c (mono_method_same_domain): New function to return
24818         whenever the caller and the callee are in the same domain.
24819
24820         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24821
24822 2003-10-30  Martin Baulig  <martin@ximian.com>
24823
24824         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24825         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24826         method parameters.
24827         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24828         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24829
24830 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24831
24832         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24833         propagation.
24834
24835         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24836         object here, so it is in the correct appdomain etc.
24837
24838 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24839
24840         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24841         already done.
24842         (mono_method_to_ir): Avoid freeing the type created returned from
24843         mono_type_create_from_typespec, since it is put into an internal cache
24844         by the function. Fixes pointer.exe.
24845
24846         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24847         trampolines for icalls and pinvokes as well. Fixes #33569.
24848
24849 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24850
24851         * mini.c: Update after appdomain changes.
24852
24853         * mini.c (mono_jit_compile_method_inner): Allways compile native
24854         method wrappers in the root domain, since there can only be one
24855         instance of them, whose address is stored in method->info.
24856
24857 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24858
24859         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24860         environment variable. Instead detect automatically whenever running
24861         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24862         valgrind.h.
24863
24864 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24865
24866         * trace.c, trace.h: New files that implement the new trace option
24867         parsing. 
24868
24869         * driver.c: Document new --trace options.
24870
24871         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24872         mini-x86.c: Apply:
24873
24874         -       if (mono_jit_trace_calls)
24875         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24876
24877         * mini.h: prototypes.
24878         
24879 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24880
24881         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24882
24883         * mini.c inssel.brg: Implement typedefbyref opcodes.
24884
24885         * mini.c (mono_jit_compile_method): Remove unused local variable.
24886
24887         * mini.c (mono_jit_compile_method_inner): Ditto.
24888         
24889 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24890
24891         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24892         
24893         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24894
24895 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24896
24897         * mini.c (mono_no_aot): Remove unused global variable.
24898
24899         * mini.c: Thread safety fixes.
24900
24901 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24902
24903         * mini.c (mono_create_class_init_trampoline): Add a lock around
24904         class_init_hash_addr.
24905
24906         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24907         #30073.
24908
24909         * mini.c: Decompose the NEWARR instruction before decomposing its
24910         arguments. Fixes #30073.
24911
24912 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24913
24914         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24915         convention.
24916
24917 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24918
24919         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24920
24921         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24922
24923         * driver.c: Add support for compiling icall wrappers to --compile.
24924
24925 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24926
24927         * inssel.brg: The empty value in class->interface_offsets is -1, not
24928         0. Fixes #49287.
24929
24930 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24931
24932         * objects.cs: New test for 'is' operator on an array of interfaces.
24933
24934 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24935
24936         * tramp-ppc.c: update trampoline code to support jumps
24937         and class initialization.
24938
24939 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24940
24941         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24942
24943         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24944
24945         * inssel.brg (OP_UNBOX): Remove unused rule.
24946
24947         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24948         region instead of one for each method. Fixes #47813.
24949
24950 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24951
24952         * exceptions.cs (test_0_nested_finally): New regression test for
24953         nested exception handlers.
24954
24955         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24956
24957         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24958
24959         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24960         inlining.
24961
24962         * mini.c (mono_method_check_inlining): Make the inlining limit 
24963         configurable by an environment variable.
24964         
24965         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24966
24967         * mini.h: Bump AOT file version.
24968
24969         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24970         token, store the image along with the token, since the token might not 
24971         refer to the same image as the method containing the relocation, 
24972         because of inlining.
24973
24974 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24975
24976         * mini.c (mono_precompile_assemblies): New function to compile
24977         all methods in all loaded assemblies.
24978
24979         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24980
24981         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24982         iassign and fassign to int*, since they can contain large negative
24983         values if the register is spilled. Also added some comments. Fixes
24984         #45817.
24985
24986         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24987         under Win32. Fixes #42964.
24988
24989 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24990
24991         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24992
24993         * aot.c: Added support for AOT compiling methods which contain calls
24994         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24995         handled.
24996         
24997         * driver.c (compile_all_methods): Run the compilation in a thread
24998         managed by mono. Fixes #44023.
24999
25000         * mini.c (mono_codegen): Print full method name in verbose output.
25001
25002         * mini-x86.c (mono_arch_patch_code): Fix warning.
25003         
25004         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
25005         jumps, since the method we are jumping to might be domain-specific.
25006
25007         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
25008
25009 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25010
25011         * inssel.brg: string chars are unsigned.
25012
25013 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
25014
25015         * TODO: New todo item.
25016
25017         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
25018         which calls mono_runtime_class_init and patches the call site to
25019         avoid further calls.
25020         (mono_arch_create_class_init_trampoline): New arch specific function 
25021         to create a class init trampoline.
25022         (create_trampoline_code): Generalized so it can create
25023         class init trampolines as well.
25024
25025         * mini.c (helper_sig_class_init_trampoline): New helper variable.
25026         (mono_create_class_init_trampoline): New function to create and cache
25027         class init trampolines.
25028         (mono_find_class_init_trampoline_by_addr): New function to lookup the
25029         vtable given the address of a class init trampoline. Used by the
25030         patching process.
25031         (mono_codegen): Generate a call to a trampoline instead of
25032         mono_runtime_class_init in LDSFLD[A].
25033         (mono_codegen): Add relocations for the new trampoline.
25034         
25035         * mini.h mini-x86.c aot.c: Added a new relocation type: 
25036         MONO_PATCH_INFO_CLASS_INIT.
25037
25038         * mini.h: Bump AOT version number.
25039
25040         * aot.c: Create a copy of the loaded code instead of using the original
25041         so methods which call each other will be close in memory, improving
25042         cache behaviour.
25043         
25044         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
25045         patch since it breaks the regression tests.
25046         
25047         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
25048         for the register saving instruction sequence since the 
25049         frame_state_for function in glibc 2.3.2 don't seem to detect it.
25050
25051 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
25052
25053         * TODO: Fix todo item && remove another.
25054
25055 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
25056
25057         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
25058         previous checkin.
25059
25060         * aot.c: Moved the check for MONO_LASTAOT into the initialization
25061         function of the module.
25062
25063         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
25064         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
25065         --no-aot command line option.
25066
25067 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
25068
25069         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
25070         by Bernie Solomon (bernard@ugsolutions.com).
25071
25072         * inssel.brg: Refactor the interface offset table related code into
25073         its separate functions and add support for the AOT case.
25074
25075 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
25076
25077         * aot.c (mono_aot_get_method_inner): Fix memory leak.
25078         
25079         * aot.c: Added mono_aot_verbose variable and made all debugging
25080         output depend on the value of this variable.
25081
25082         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
25083         method_label and info_label.
25084
25085         * mini.h mini-x86.c aot.c: Added a new relocation type 
25086         MONO_PATCH_INFO_IID for klass->interface_id.
25087
25088         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
25089         the MonoJitInfo structure.
25090
25091         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
25092         a non-root appdomain in shared mode.
25093
25094 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25095
25096         * aot.c: make aot loader less verbose. Remove free of unused variable.
25097
25098 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25099
25100         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
25101
25102         * .cvsignore: Added *.dll.
25103
25104         * mini.c (mono_print_tree_nl): New function callable while debugging.
25105
25106         * mini.c (mono_print_code): Export this.
25107
25108         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
25109         patched code.
25110
25111 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
25112
25113         * mini.h (MonoCompile): Added 'jit_info' field.
25114
25115         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
25116         the cfg structure, since it is needed by the AOT compiler.
25117
25118         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
25119
25120         * aot.c: A major rewrite. Changes include:
25121         - save exception tables for methods which have them.
25122         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
25123         to g_module_symbol.
25124         - reworked the file format so it is now much smaller and needs
25125         fewer relocation entries.
25126         
25127 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25128
25129         * aot.c (load_aot_module): Fix build bustage on platforms without
25130         Boehm GC.
25131
25132 2003-09-04  Martin Baulig  <martin@ximian.com>
25133
25134         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
25135
25136 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25137
25138         * TODO: Some new optimization ideas.
25139
25140         * aot.c: Move AOT module loading logic here from mono_assembly_open.
25141
25142         * aot.c: Save the optimization flags used to compile the code into
25143         the AOT module.
25144
25145         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
25146         support emitting domain specific code.
25147         
25148         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
25149         no longer domain neutral. It can be made domain neutral by compiling 
25150         with --optimize=shared.
25151
25152         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
25153         between appdomains.
25154
25155         * driver.c mini.h mini.c: New --no-aot debugging option which disables
25156         loading of AOT code.
25157
25158         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
25159         
25160         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
25161         if there is no domain neutrality information.
25162
25163 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25164
25165         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
25166         format version into the generated library.
25167
25168         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
25169         callee method into the caller since one of them could be shared.
25170
25171         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
25172         system exceptions from AOT code now works.
25173
25174         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
25175         method if it is domain neutral and the callee is not.
25176
25177         * graph.c (cfg_emit_one_loop_level): Fix warning.
25178
25179 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25180
25181         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
25182         last checkin.
25183
25184 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25185
25186         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
25187         is needed  by code which is executed before mono_runtime_init ().
25188         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
25189         
25190         * mini.c (mono_thread_abort): Fix warning.
25191         (mono_jit_compile_method): Call static constructor in the AOT case too.
25192
25193         * aot.c (mono_compile_assembly): Fix warning.
25194
25195 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25196
25197         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
25198
25199 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
25200
25201         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
25202
25203         * cpu-pentium.md: Fix the length of call opcodes so they include the
25204         ESP restoring instruction. Fixes #47968.
25205
25206 2003-08-28  Martin Baulig  <martin@ximian.com>
25207
25208         * mini-x86.c (mono_arch_call_opcode): Added support for
25209         MONO_TYPE_GENERICINST.
25210
25211         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
25212
25213 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25214
25215         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
25216         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
25217
25218         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
25219         metadata_section.
25220
25221 2003-08-26  Martin Baulig  <martin@ximian.com>
25222
25223         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25224         when reporting an error, set this to the actual error location.
25225         (mono_method_to_ir): Report the correct error location if
25226         get_basic_blocks() returned an error.
25227
25228 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25229
25230         * mini.c (mono_type_blittable): OBJECT is not blittable.
25231         (mono_method_blittable): Methods which have marshalling descriptors
25232         are not blittable either. Fixes #47842.
25233
25234 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25235
25236         * driver.c mini.c: Use an environment variable instead of a global 
25237         variable. Also fix the build.
25238
25239         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25240         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25241         reporting this. 
25242
25243         * driver.c mini.c: Added --with-valgrind option to turn off some
25244         code which prevents mono from running under valgrind.
25245
25246         * mini.c (mono_emit_call_args): Fixed warning.
25247
25248         * mini.c (mono_emulate_opcode): Fixed warning.
25249
25250 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25251
25252         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25253         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25254         regalloc.c, regalloc.h: specify available registers in arch-specific
25255         code and support floats in the regallocator (patch by Laurent Morichetti 
25256         <l_m@pacbell.net>)
25257
25258 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25259
25260         * mini.c: mono_thread_current() can be called only after
25261         mono_runtime_init(): rearrange code to not call it early on.
25262
25263 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25264
25265         * mini.c: allocate jump tables in the code mempools.
25266
25267 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25268
25269         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25270         freed.
25271
25272 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25273
25274         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25275         12 to 16.  This fixes bug #47453.
25276
25277
25278 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25279
25280         * mini-ppc.c: fixed indexed load and unsigned compares.
25281
25282 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25283
25284         * mini.c: reenabled installation of handler for
25285           thread abort signal.
25286
25287 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25288
25289         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25290         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25291         until it's fixed and actually useful.
25292
25293 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25294
25295         * inssel-long32.brg: couple more opcodes implemented.
25296
25297 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25298         
25299         * mini-sparc.c: Even more opcodes implemeted.
25300
25301 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25302
25303         * mini-sparc.c: More opcodes implemented.
25304
25305 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25306
25307         * mini-sparc.c: More opcodes implemented.
25308
25309 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25310
25311         * inssel-sparc.brg: Add some needed rules.  Direct
25312         copy from PPC.
25313         * Makefile.am: Use inssel-sparc.brg
25314         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25315         an assert happy for now.
25316
25317 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25318
25319         * mini-sparc.c: Fixed compile errors.
25320         * exceptions-sparc.c: Same.  We now produce a mono binary 
25321         on sparc-linux.  Yea.
25322
25323 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25324
25325         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25326         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25327         They compile, but do not work.
25328
25329 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25330
25331         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25332         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25333         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25334         (ct@gentoo.org).
25335
25336 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25337
25338         * mini.c: more opcodes implemented and better support for generics.
25339
25340 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25341
25342         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25343         * mini.c, mini.h: first cut at generics support: some new instructions 
25344         added and changed the behaviour of some of the existing ones.
25345
25346 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25347
25348         * mini.c: Removed definition of metadata_shared mutex here.
25349
25350 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25351
25352         * mini-x86.c: make vararg calls work for instance methods.
25353
25354 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25355
25356         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25357         returns the arguments in a separte list, now.
25358
25359 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25360
25361         * aot.c, mini.c: updates for array type representation changes.
25362
25363 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25364
25365         * mini.c: register function to perform jit shutdown.
25366
25367 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25368
25369         * mini.c: use a faster allocator if possible.
25370
25371 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25372
25373         * aot.c: some cleanups and portability changes.
25374
25375 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25376
25377         * mini.c: use faster allocation for CEE_BOX if possible.
25378
25379 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25380
25381         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25382         Moved inlined mempcy code to its own function so that is can be
25383         reused. Added an inline memset function as well (optimized initobj).
25384         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25385
25386 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25387
25388         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25389
25390 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25391
25392         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25393         arch code can setup the cpu for CLR execution, if needed.
25394         We use it on x86 to set the precision of FP operations.
25395
25396 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25397
25398         * mini.c: disable some optimizations if we can guess they'll cost too
25399         much for a given method.
25400
25401 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25402
25403         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25404         
25405 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25406         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25407         info collection support.
25408
25409 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25410
25411         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25412         is now implemented in the profiling API. Get rid of a couple of
25413         unnecessary global variables.
25414
25415 2003-06-15  Nick Drochak <ndrochak@gol.com>
25416
25417         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25418         * cpu-g4.md: add op_bigmul and op_bigmul_un
25419         * cpu_pentium.md: add op_bigmul_un
25420         * inssel-long32.brg: add rule for unsigned bigmul
25421         * mini-ops.h: define OP_BIGMUL_UN
25422         * mini-x86.c: THE BUG: handle (un)signed properly
25423         * mini.c: choose unsigned opcode if needed.
25424         This set of patches fixes bug #44291
25425
25426 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25427
25428         * mini.c (optimize_branches): improved to handle all kinds of
25429         conditional branches.
25430
25431 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25432
25433         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25434         don't raise exceptions.
25435
25436 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25437
25438         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25439         to arch-specific files.
25440
25441 2003-06-09  Martin Baulig  <martin@ximian.com>
25442
25443         * Makefile.am (libs): Added $(LIBGC_LIBS).
25444
25445 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25446
25447         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25448         and OP_ATAN (fixes bug#44293).
25449
25450 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25451
25452         * Makefile.am, mini-x86.c: rename cpu description array to
25453         pentium_desc, since some compilers define the 'pentium' preprocessor
25454         symbol.
25455
25456 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25457
25458         * mini.c (mini_select_instructions): add explicit branch if the
25459         following block is not the false target of a conditional branch -
25460         we need this with any optimization that reorder or remove bblocks
25461
25462         * mini.c (optimize_branches): bug fixes
25463
25464 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25465
25466         * mini.c (mono_method_to_ir): inline static readonly fields
25467
25468         * ssa.c (fold_tree): start cfold support for long (very simple
25469         cases only)
25470
25471         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25472
25473 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25474
25475         * inssel.brg: fixed memcpy (bug #44219).
25476
25477 2003-06-05  Dick Porter  <dick@ximian.com>
25478
25479         * driver.c: Set the glib log levels to not abort if g_message
25480         recurses.
25481
25482         g_set_prgname() has to happen before mini_init() so that the
25483         process handle gets the info.
25484         
25485 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25486
25487         * driver.c: add intrins to the default optimizations to get wider
25488         exposure.
25489
25490 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25491
25492         * mini.h: some large basic blocks will overflow a 16-bit
25493         integers for symbolic registers.
25494
25495 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25496
25497         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25498         (mono_arch_output_basic_block): fix bug 43499 
25499
25500 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25501
25502         * mini.c: kill duplicated definition of mono_debug_format.
25503
25504 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25505
25506         * mini-x86.c, arrays.cs: fixed register allocation bug.
25507
25508 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25509
25510         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25511
25512         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25513
25514 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25515
25516         * mini.c:
25517         (print_method_from_ip): also print source location information if
25518         available.
25519
25520 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25521
25522         * mini.c (mono_find_block_region): bug fix in region code
25523         (mini_method_compile): enable removing unreachable code again, but
25524         only in methods without exception clauses.
25525
25526 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25527
25528         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25529         Implemented arglist opcode and handling of TypedReference type.
25530         Fixed x86 call convention when a structure is returned.
25531         Minimal support for calling static vararg methods.
25532
25533 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25534
25535         * mini.c (mini_method_compile):  always remove unreachable code,
25536         because the code in them may be inconsistent  (access to dead
25537         variables for example).
25538
25539 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25540
25541         * driver.c, debug-mini.c: warning fixes.
25542
25543 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25544
25545         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25546
25547 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25548
25549         * mini.c: thread-static fields are registered in mono_class_vtable(),
25550         so ensure the function is called before checking for them.
25551
25552 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25553
25554         * mini.c (optimize_branches): fix for bug 43586
25555
25556         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25557         overflow (fixes Bug #43639)
25558
25559 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25560
25561         * mini.c, objects.cs: allow the use of stobj for primitive types.
25562
25563 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25564
25565         * mini.c: be less strict about argument checking until we support
25566         running the verifier.
25567
25568 2003-05-27  Nick Drochak <ndrochak@gol.com>
25569
25570         * basic-long.cs: tests for (ulong)int * (ulong)int also
25571         * mini.c: use the same trick for (ulong)int * (ulong)int
25572
25573 2003-05-27  Nick Drochak <ndrochak@gol.com>
25574
25575         * basic-long.cs: add regression test for (long)int * (long)int
25576         * cpu-pentium.md: add op_bigmul specification
25577         * inssel-long32.brg: add OP_BIGMUL rule
25578         * mini-ops.h: add OP_BIGMUL
25579         * mini-x86.c: register allocator: handle case where src1 needs to be
25580         in EAX.
25581         * mini.c: substitute special BIGMUL opcode in the tree for 
25582         (long)int * (long)int
25583
25584 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25585
25586         * jit-icalls.c: call the type ctor on field access if needed.
25587
25588 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25589
25590         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25591         to a method (including results of ldelema, bug#43207).
25592
25593 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25594
25595         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25596         colors to show exception handler blocks.
25597
25598         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25599         (fix for pinvoke7.cs).
25600
25601 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25602
25603         * mini.h, mini.c: ensure correct initialization order for types that
25604         require it. Prepare for lazy compilation of jit icall wrappers.
25605         Provide a name for opcode emulation to reduce unneeded mallocing.
25606
25607 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25608
25609         * mini-x86.c: better register restoring code and profiling
25610         support for tail calls.
25611
25612 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25613
25614         * mini.h, driver.c: prepare for leaf methods optimization.
25615
25616 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25617
25618         * mini.c: get targets of branches before converting a method.
25619
25620 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25621
25622         * mini.c (optimize_branches): added some experimental code (disbaled) 
25623
25624 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25625
25626         * mini.c (optimize_branches): fix branch to branch optimization 
25627
25628         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25629
25630         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25631
25632         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25633
25634         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25635         if needed.
25636
25637 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25638
25639         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25640         enable use of interface variables again.
25641
25642         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25643         I1 to registers because there is no simply way to sign extend 8bit
25644         quantities in caller saved registers on x86.
25645
25646         * inssel-float.brg: set costs of some rules to 2 so
25647         that monobure always select the arch. specific ones if supplied,
25648         regardless of the order we pass the files to monoburg.
25649
25650 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25651
25652         * mini.c, mini-x86.c: since the magic trampoline for jumps
25653         can't patch the code directly, we do it as soon as the
25654         method gets compiled.
25655
25656 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25657
25658         * mini-x86.c, mini.h: introduce a new patching method
25659         to support CEE_JMP and tail calls.
25660         * mini.c: obey tail.call. Don't precompile methods target
25661         of CEE_JMP.
25662         * tramp-x86.c: new trampoline code to handle methods
25663         reached through a jump.
25664
25665 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25666
25667         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25668         bit values to registers
25669
25670 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25671
25672         * mini.c (mono_compile_get_interface_var): share interface
25673         variables if possible.
25674
25675 2003-05-16  Martin Baulig  <martin@ximian.com>
25676
25677         * debug-mini.c (mono_init_debugger): New function to initialize
25678         the debugger.  This is not in the debugger since it needs to
25679         access some of mini's internals.
25680
25681 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25682
25683         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25684
25685 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25686
25687         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25688         for value type handling.
25689
25690 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25691
25692         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25693         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25694
25695 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25696
25697         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25698           the constructor through a proxy.
25699
25700 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25701
25702         * jit-icalls.c, inssel.brg: fixes to array element address
25703         calculations.
25704
25705 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25706
25707         * mini-x86.c (is_regsize_var): allocate pointer to registers
25708
25709 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25710
25711         * driver.c: fixed typo, added intrins to the set of optimizations
25712         tested with regressions.
25713
25714 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25715
25716         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25717         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25718         test case.
25719
25720 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25721
25722         * inssel.brg: remove some common pop instructions without side effects
25723
25724 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25725
25726         * inssel-x86.brg: fixed thinko in int to double conversions.
25727
25728 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25729
25730         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25731
25732 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25733
25734         * inssel-long32.brg: two more missing instructions.
25735
25736 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25737
25738         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25739         if not already set.
25740
25741 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25742
25743         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25744         correctly.
25745
25746         * basic-float.cs: Added tests for negative zero.
25747
25748 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25749
25750         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25751         a couple of missing operations for long casts, with test cases.
25752
25753 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25754
25755         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25756
25757 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25758
25759         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25760         code size estimation.
25761
25762 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25763
25764         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25765         abstract methods (fix bug 42542)
25766
25767         * aot.c: add ability to handle array types
25768         
25769 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25770
25771         * mini.c: Call the _specific versions of the object allocation
25772         functions if possible.
25773
25774 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25775
25776         * driver.c: call setlocale ().
25777
25778 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25779
25780         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25781         windows build.
25782
25783 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25784
25785         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25786
25787         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25788         wrappers (fix bug 42122)
25789
25790 2003-05-04  Martin Baulig  <martin@ximian.com>
25791
25792         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25793
25794         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25795         s/mini_set_defaults/mono_set_defaults/g.
25796
25797 2003-05-04  Martin Baulig  <martin@ximian.com>
25798
25799         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25800
25801 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25802
25803         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25804         (reported by Don Roberts).
25805
25806 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25807
25808         * mini.c: temporarily work around two bugs for this release.
25809
25810 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25811
25812         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25813         that contains -export-dynamic and it makes using the ld script
25814         useless.
25815         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25816
25817 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25818
25819         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25820         specific cpu.
25821
25822 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25823
25824         * mini.c: make sure leave calls all the needed finally blocks,
25825         even when the target jumps out of multiple exception clauses.
25826
25827 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25828
25829         * ldscript, Makefile.am: add linker script to reduce the number of
25830         exported symbols (should also fix the issues with libwine defining
25831         some of the same symbols in io-layer).
25832
25833 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25834
25835         * driver.c (mini_main): Avoid assertion when no file name is given on 
25836         the command line.
25837
25838 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25839
25840         * driver.c: added --version/-V command line option.
25841         Added the inline optimization in the regression tests.
25842
25843 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25844
25845         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25846         to the type in the method signature (fixes bug#42134).
25847
25848 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25849
25850         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25851
25852 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25853
25854         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25855
25856 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25857
25858         * driver.c: fixed bug #42100.
25859
25860 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25861
25862         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25863
25864 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25865
25866         * mini.c: moved most of the code required to do inlining to its own
25867         function so it can be reused. Inline also ctors if appropriate.
25868
25869 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25870
25871         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25872         the runtime can call mono API functions.
25873
25874 2003-04-27  Martin Baulig  <martin@ximian.com>
25875
25876         * debug-mini.c (mono_debug_init_method): Added
25877         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25878         send a notification to the debugger.
25879
25880         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25881         running in the Mono Debugger, just pass the breakpoint number to
25882         mono_debug_init_method().
25883
25884         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25885
25886 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25887
25888         * mini.c: allow some more unsafe compares.
25889
25890 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25891
25892         * mini-x86.c, Makefile.am: make distcheck works (partially from
25893         a patch by Richard Lee <r.h.lee@attbi.com>).
25894         * regset.c, regset.h: removed, they are unused.
25895
25896 2003-04-25  Dick Porter  <dick@ximian.com>
25897
25898         * driver.c: Usage reports the name as 'mono' not 'mini'
25899         * exceptions-x86.c: Build and run on freebsd
25900
25901 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25902
25903         * Makefile.am: install the program with the 'mono' name and
25904         the library as libmono instead of mini and libmini.
25905
25906 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25907
25908         * driver.c: provide the APIs for the embedding interface of the old jit.
25909
25910 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25911
25912         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25913
25914 2003-04-23  Martin Baulig  <martin@ximian.com>
25915
25916         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25917
25918         * driver.c: Added `--debug' command line argument to enable
25919         debugging support.
25920
25921 2003-04-23  Martin Baulig  <martin@ximian.com>
25922
25923         * debug.[ch]: Removed.  The code is now in
25924         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25925
25926         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25927         last six months.
25928
25929 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25930
25931         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25932
25933 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25934
25935         * mini.c:
25936         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25937         mono_domain_finalize.
25938         (mini_method_compile): use mono_method_profile* if the the option is
25939         enabled.
25940
25941 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25942
25943         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25944         methods with their wrapper.
25945
25946         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25947         methods with their wrapper.
25948
25949         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25950         their wrapper.
25951
25952         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25953         wrapper.
25954
25955         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25956         methods.
25957
25958 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25959
25960         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25961
25962 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25963
25964         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25965         of the mempool. This is slightly faster and uses less memory
25966
25967 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25968
25969         * mini.c: avoid O(n) allocation for variables.
25970
25971 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25972
25973         * mini.c: handle items on the stack after inlining methods.
25974
25975 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25976
25977         * mini.c: make the method->opcode optimization dependent
25978         on MONO_OPT_INSTRINS and do it lazily.
25979
25980 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25981
25982         * driver.c: print overall results at the end of regression run.
25983
25984 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25985
25986         * inssel.brg: don't overwrite symbolic registers.
25987
25988 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25989
25990         * inssel-x86.brg: fix conversion from long to float.
25991
25992 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25993
25994         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25995
25996 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25997
25998         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25999
26000         * driver.c: Added --print-vtable option as in the old JIT.
26001
26002 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26003
26004         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
26005
26006 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
26007
26008         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
26009
26010 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
26011
26012         * mini.c regalloc.c regalloc.h: Fix memory leak.
26013
26014 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
26015
26016         * aot.c (mono_aot_get_method): register all used strings
26017
26018 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
26019
26020         * mini.c: always intern strings references with ldstr at compile time.
26021
26022 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
26023
26024         * Makefile.am: add BUILT_SOURCES.
26025
26026 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
26027
26028         * driver.c: give a better error message when the assembly to execute
26029         doesn't have an entry point.
26030
26031 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
26032
26033         * Makefile.am: added hack for automake
26034
26035         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
26036         correct sematics.
26037
26038         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
26039
26040 22003-04-07  Martin Baulig  <martin@ximian.com>
26041
26042         * Makefile.am: Added Makefile.am.
26043
26044         * debugger-main.c: Removed, this is now in the debugger where it
26045         belongs.
26046
26047         * mini.pc.in: Call this package `mini' for the moment.
26048
26049
26050
26051
26052
26053
26054
26055
26056
26057
26058
26059
26060
26061
26062