Normalize line endings.
[mono.git] / mono / mini / ChangeLog
1 2010-07-27  Mark Mason <glowingpurple@gmail.com>
2
3         * mini-mips.c: Fix compilation errors.
4
5 2010-07-25  Zoltan Varga  <vargaz@gmail.com>
6
7         * mini-trampolines.c (common_call_trampoline): Fix a warning.
8
9 2010-07-24  Zoltan Varga  <vargaz@gmail.com>
10
11         * mini-s390x.c: Change the calling convention to pass this as first as on other
12         architectures. Remove some dead code from the get_vcall_slot().
13
14 2010-07-24  Geoff Norton  <gnorton@novell.com>
15
16         * mini-darwin.c: Having reviewed xnu-1504.7.4 it is safe to call fork directly
17         here, it seems the old implementation was a hold over from the linux behaviour
18         This fixed gdb backtrace on amd64 and ppc.
19
20 2010-07-23  Zoltan Varga  <vargaz@gmail.com>
21
22         * xdebug.c (mono_save_trampoline_xdebug_info): Call
23         mono_loader_lock/unlock_if_inited () to avoid asserts on some platforms during
24         startup.
25
26 2010-07-23  Marek Habersack  <mhabersack@novell.com>
27
28         * Makefile.am (version.h): generate version using GIT commit info,
29         removed the old svn and git-svn code.
30
31 2010-07-22  Jb Evain  <jbevain@novell.com>
32
33         * method-to-ir.c (BRANCH_COST): set to 10.
34
35 2010-07-20  Zoltan Varga  <vargaz@gmail.com>
36
37         * method-to-ir.c (op_to_op_src2_membase): Reorganize the amd64 op->op membase
38         code, it was missing a few 'break's.
39
40 2010-07-20  Zoltan Varga  <vargaz@gmail.com>
41
42         * method-to-ir.c (mini_emit_inst_for_method): Add Array.GetLength/GetLowerBound ().
43         Fixes #618176.
44
45 2010-07-16  Zoltan Varga  <vargaz@gmail.com>
46
47         * mini-arm.c: Fix the arm build by passing a MonoGenericSharingContext to get_call_info.
48
49 2010-07-16  Zoltan Varga  <vargaz@gmail.com>
50
51         * mini-llvm.c: Add more SIMD instructions.
52
53 2010-07-15  Miguel de Icaza  <miguel@novell.com>
54
55         * mini.c: Allow "casts" to be passed on MONO_DEBUG as well.
56
57 2010-07-15  Zoltan Varga  <vargaz@gmail.com>
58
59         * mini-ia64.c: Change the calling convention to pass this as first as on other
60         architectures. Remove some dead code from the get_vcall_slot() and the implementation
61         of the CALL_MEMBASE opcodes as a result.
62
63 2010-07-13  Miguel de Icaza  <miguel@novell.com>
64
65         * mini.c: LLVM is disabled by default on LLVM builds.  You can use
66         the MONO_ENV_OPTIONS to set the --llvm flag.
67
68 2010-07-13  Atsushi Enomoto  <atsushi@ximian.com>
69
70         * driver.c : windows build fix for --with-moonlight.
71
72 2010-07-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
73
74         * mini.c|h:
75         * mini-exceptions.c: Add an option to MONO_DEBUG for tracking down exceptions
76         that reach native code from a reverse pinvoke.
77
78 2010-07-11  Zoltan Varga  <vargaz@gmail.com>
79
80         * method-to-ir.c (mono_method_to_ir): Kill some duplicated code.
81
82         * mini-<ARCH>.c (get_call_info): Call mini_type_get_underlying_type () before passing
83         a type to MONO_TYPE_IS_REFERENCE (), since the latter can't handle VAR/MVAR.
84         Fixes #620864.
85
86         * generics.cs: Add a test.
87
88 2010-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
89
90         * mini.c (mono_jit_compile_method_inner): Don't bomb out if we don't
91         support a given runtime implemented method.
92
93 2010-07-10  Mark Probst  <mark.probst@gmail.com>
94
95         * mini-darwin.c: Register the exception thread with the GC.
96
97 2010-07-10  Zoltan Varga  <vargaz@gmail.com>
98
99         * mini-llvm.c (set_metadata_flag): Set metadata flags only when using the LLVM
100         mono branch.
101
102 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
103
104         * mini.h (MONO_INST_HAS_CONSTANT_LOAD): New instruction flag marking loads which load
105         from constant memory.
106
107         * ir-emit.h: Clean up the _FAULT macros a bit.
108
109         * decompose.c: Mark some loads as constant.
110
111         * mini-llvm.c: Pass the constant-ness of loads to LLVM using custom metadata.
112
113 2010-07-09  Miguel de Icaza  <miguel@novell.com>
114
115         * driver.c (mini_usage): Change the name of the --sgen flag to be
116         --gc=sgen and also support --gc=boehm.   These flags can also be
117         set on MONO_ENV_OPTIONS to propagate this to children processes.
118
119         * main.c: Remove the MONO_VM_OPTIONS environment variable that
120         only supported "sgen" and "llvm" config options and instead parse
121         the MONO_ENV_OPTIONS as options that are parsed by the command
122         line parser.   Any command line option that Mono supports can be
123         passed in this environment variable.
124
125 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
126
127         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks +
128         LLVM.
129
130         * mini.c (mini_method_compile): Run abcrem uncoditionally when LLVM is used since
131         it can now eliminate more than just bounds checks.
132
133         * ir-emit.h: Add MAY_FAULT versions of the LOAD_MEMBASE macros which take
134         an extra 'fault' argument.
135
136         * method-to-ir.c: Set the MONO_INST_FAULT of the array opcodes which are decomposed
137         later.
138
139         * decompose.c: Propagate the MONO_INST_FAULT flag from the array opcodes to their
140         decomposition.
141
142         * mini-llvm.c: Remove support for the X86/AMD64 COMPARE_MEMBASE opcodes, they are
143         no longer generated when LLVM is used.
144
145         * abcremoval.c: Eliminate MONO_INST_FAULT flags if possible.
146
147 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
148
149         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks + LLVM.
150
151 2010-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
152
153         * driver.c: Moonlight: Force line buffering for stdout.
154
155 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
156
157         * mini-llvm.c (emit_load): Revert the last changes, the load/store intrinsics
158         are only callable using invoke.
159
160 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
161
162         * mini-llvm.c (process_bb): Use emit_load () in one more place.
163
164         * mini-llvm-cpp.cpp (force_pass_linking): Link in more function passes so
165         MONO_LLVM=xxx is actually usable.
166
167         * mini-llvm.c (emit_load): Use the mono specific load intrinsics even outside clauses
168         since LLVM might be able to hoist them out of loops.
169         (emit_store): Ditto.
170
171 2010-07-08  Neale Ferguson <neale@sinenomine.net>
172
173         * mini-s390x.c: Correct setting value of header from cfg->header - fix crash
174         in typeload-unaligned test.
175
176 2010-07-08  Zoltan Varga  <vargaz@gmail.com>
177
178         * xdebug.c (mono_save_trampoline_xdebug_info): Make this receive a MonoTrampInfo.
179
180         * tramp-<ARCH>.c: Move the calls to save_trampoline_xdebug_info () into
181         mini-trampolines.c/mini-exceptions.c. Use a more human readable name for
182         generic trampolines+rgctx fetch trampolines.
183
184 2010-07-08  Geoff Norton  <gnorton@novell.com>
185
186         * genmdesc.pl: nacl is not a new inst slot, it just modifies the size slot.
187
188 2010-07-07  Zoltan Varga  <vargaz@gmail.com>
189
190         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Add xdebug info.
191
192         * method-to-ir.c (emit_imt_argument): Call add_outarg_reg even if MONO_ARCH_IMT_REG
193         is not defined in the LLVM case to keep the imt arg alive.
194
195 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
196
197         * exceptions-<ARCH>.c mini-llvm.c: Clean up the naming of the llvm related trampoline
198         functions, now its 'llvm_<FOO>_trampoline'.
199
200         * method-to-ir.c (emit_imt_argument): Fix llvm support.
201
202         * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
203         cannot be passed in the same call.
204
205         * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
206         register to be the same as the RGCTX register, the two can't be used together on
207         the same call.
208
209 2010-07-05  Miguel de Icaza  <miguel@novell.com>
210
211         * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
212         that allows the user to force the VM to use llvm or sgen.
213
214 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
215
216         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
217         before processing the exception on PPC too.
218
219         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
220
221         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
222         'this' is always passed as the first argument, before the vtype ret arg. This
223         simplifies get_this_arg_reg () and LLVM integration.
224
225 2010-07-05  Martin Baulig  <martin@ximian.com>
226
227         * exceptions-x86.c (mono_arch_handle_exception): Port this to
228         Windows; apply my patch from r159782 in the mono-2-6 branch.
229
230 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
231
232         * Makefile.am: Don't build the debug assembler files if we're building without
233         debugger support.
234
235 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
236
237         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
238
239 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
240
241         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
242         length.
243
244         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
245         regs [ARMREG_FP] instead.
246
247         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
248
249         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
250         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
251
252         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
253
254         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
255
256         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
257
258         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
259         without IMT_REG defined (ARM).
260
261         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
262         the trampolines.
263
264 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
265
266         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
267
268 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
269
270         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
271         definitions to match their declarations and vice-versa.
272
273 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
274
275         * Makefile.am (common_sources): Add mini-llvm.h.
276
277         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
278
279 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
280
281         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
282         compiling.
283
284 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
285
286         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
287         implemt the option of loading the llvm backend from a module so
288         that we can have a single binary and the bloat from llvm is
289         only experienced when it is actually loaded.
290
291 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
292
293         * mini-llvm.c: remove direct access to mono_defaults.
294
295 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
296
297         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
298         a no-op.
299
300         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
301
302         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
303         is now mono_arch_nullify_class_init_trampoline ().
304         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
305         opcodes, they are no longer needed.
306
307         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
308         now mono_arch_nullify_class_init_trampoline ().
309         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
310         opcodes, they are no longer needed.
311
312         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
313         vtable on platforms which support it.
314
315         * driver.c: Print the full LLVM version we are compiled against in --version.
316
317         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
318         a bit better. Decode nesting information to fix eh support for llvm+aot.
319
320         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
321         methods.
322
323         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
324
325         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
326         is always passed as the first argument, before the vtype ret arg. This simplifies
327         get_this_arg_reg () and LLVM integration.
328
329 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
330
331         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
332         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
333         most of the vcall specific code to mono_vcall_trampoline () from
334         common_call_trampoline ().
335
336 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
337
338         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
339         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
340         if the callsite is patched.
341
342         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
343         the llvm branch.
344
345         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
346         the trampoline in the xdebug info.
347
348         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
349         as well.
350
351 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
352
353         * mini-llvm.c: Fix a few problems exposed by make check.
354
355 2010-06-25  Mark Probst  <mark.probst@gmail.com>
356
357         * mini-trampolines.c (common_call_trampoline): An ugly hack to
358         work around a potentially very hard to fix problem with inflating
359         generic methods.
360
361 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
362
363         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
364         problem has been fixes.
365
366 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
367
368         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
369
370         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
371         It might be be better to define a MonoGCJitOptions structure later and have the
372         GC return that.
373
374         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
375
376         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
377
378         * debugger-agent.c (get_objref): Implement support for sgen.
379
380         * driver.c: Remove the unused gc_wrapper.h include.
381
382         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
383         implementation.
384
385 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
386
387         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
388
389         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
390         in MonoCompile.
391
392         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
393         instead.
394
395 2010-06-23  Miguel de Icaza  <miguel@novell.com>
396
397         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
398         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
399
400         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
401         it only for Boehm diagnostics.
402
403         * Makefile.am: Make the file a bit more consistent.
404
405         * debug-debugger.c: Wrap the entire file with an #ifdef
406         MONO_DEBUGGER_SUPPORTED to simplify the build.
407
408         * Makefile.am: Fix the opcodes build issue by including the
409         source, not by including the .lo file directly
410
411         Always bring the MDB sources into the build, to drop the
412         dependency on the AM_CONDITIONAL from configure.in as the hard
413         debugger supports Boehm, but not Sgen, this simplifies the build. 
414
415         * Renamed the *.s files into *.S
416
417 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
418
419         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
420         wb for now on 64bits systems while issues with valuetype returns
421         are not fixed.
422
423 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
424
425         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
426         passes by calling createStandardFunctionPasses ().
427
428 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
429
430         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
431
432 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
433
434         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
435         MONO_INST_FAULT.
436
437         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
438         allow better optimization if the OP_LDADDR which caused the flag to be set was
439         optimized away.
440
441         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
442
443         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
444         the type token.
445
446         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
447
448         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
449
450 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
451
452         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
453         to handle the code sequence generated for non-near calls. Fixes #616056.
454
455 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
456
457         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
458
459         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
460
461         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
462         nesting clause too.
463         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
464         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
465         trampoline which saves the context, so changes made to callee saved registers in
466         finally clauses are visible to a nesting catch clause.
467
468         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
469
470         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
471         in LLVM compiled code.
472         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
473         the finally handler has ran.
474
475         * mini.h (ResumeState): New structure containing information required to resume
476         exception handling after executing LLVM compiled finally clauses.
477
478         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
479         bit, by passing all the registers as one argument.
480
481 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
482
483         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
484         to avoid an assert.
485
486 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
487
488         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
489
490         * aot-compiler.c aot-runtime.c: Fix LLVM support.
491
492         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
493         pad, branch to a new bblock instead.
494
495         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
496         orig_method.
497
498         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
499
500         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
501
502 2010-06-17  Geoff Norton  <gnorton@novell.com>
503
504         * mini-arm.h:
505         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
506         can be used by sgen.
507
508 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
509
510         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
511
512         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
513         fails.
514
515         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
516         the ip done by throw_exception (), it is not needed for corlib exceptions.
517
518 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
519
520         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
521         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
522         of size > 5 words. This support fast barriers for value types up to
523         256/512 bytes which     beyond that the copying itself is the major issue.
524
525         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
526         for gsharing, so use it.
527
528         This eliminate all calls to mono_value_copy from managed code in
529         gmcs, fsharp and ipy.
530
531         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
532
533         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
534         performance kept
535
536         * mini.c (mini_init): Register new icall.
537
538 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
539
540         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
541         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
542
543 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
544
545         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
546         value types as the overhead is huge. Manually expand it up to 5 words to
547         avoid code bloat.
548
549         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
550         is an exception that performance is dominated by mono_value_copy.
551
552         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
553
554 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
555
556         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
557         trampolines on x86, since those have their own cconv.
558
559         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
560         exception trampolines.
561
562         * tramp-x86.c: Add xdebug info for a few trampolines.
563
564         * mini-llvm.c: Set the name of the arguments.
565
566         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
567         using a block address if using the LLVM mono branch.
568
569         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
570         trampolines.
571
572 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
573
574         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
575
576         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
577
578         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
579
580         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
581
582         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
583         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
584         to identify the vtable slot address plus the method which needs to be compiled.
585
586         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
587         using llvm.
588
589         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
590         'this' is always passed as the first argument, before the vtype ret arg. This
591         simplifies get_this_arg_reg () and LLVM integration.
592
593         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
594         the latest changes.
595
596         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
597         these trampolines.
598
599         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
600
601         * mini-llvm.c: Fix compilation with llvm 2.6.
602
603         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
604
605         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
606         defined.
607
608         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
609         is always passed as the first argument, before the vtype ret arg. This simplifies
610         get_this_arg_reg () and LLVM integration.
611
612 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
613
614         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
615
616         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
617         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
618         translate into much nicer code.
619
620 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
621
622         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
623         parameter index information. Use this to simplify a lot of code.
624
625         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
626
627 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
628
629         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
630         to fix infinite generic recursion. Fixes #612702.
631
632 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
633
634         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
635         imt trampoline per imt slot when using LLVM.
636
637 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
638
639         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
640
641 2010-06-09  Levi Bard  <levi@unity3d.com>
642
643         * debugger-agent.c: Clear unloaded types on appdomain unload.
644
645 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
646
647         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
648         Fixes #612206.
649
650         * exceptions.cs: Add a test.
651
652 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
653
654         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
655
656         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
657
658         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
659         so it doesn't have to do it.
660
661         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
662         process does not mix with ours.
663
664         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
665         ones.
666
667         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
668         loads/stores which can throw exceptions inside clauses.
669
670 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
671
672         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
673         one ENDFINALLY.
674
675         * mini.c (mini_init): Register mono_resume_unwind as an icall.
676
677 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
678
679         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
680
681         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
682         locals.
683
684 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
685
686         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
687         appdomain.
688
689 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
690
691         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
692         Use a separate generic class init trampoline for llvm, since it needs a different
693         signature.
694
695         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
696         includes the location of this/rgctx.
697
698         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
699         branch.
700
701 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
702
703         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
704
705         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
706         clause.
707
708 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
709
710         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
711         says so.
712
713         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
714
715         * aot-compiler.c (patch_to_string): New debugging helper function.
716
717 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
718
719         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
720         trampoline.
721
722         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
723
724         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
725
726         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
727
728         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
729         clauses.
730
731         * mini.c (create_jit_info): Print EH clause info for LLVM too.
732
733 2010-05-28  Mark Probst  <mark.probst@gmail.com>
734
735         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
736         cpobj with reference types.
737
738 2010-05-28  Mark Probst  <mark.probst@gmail.com>
739
740         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
741         write barrier for reference types.
742
743 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
744
745         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
746         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
747
748 2010-05-31  Martin Baulig  <martin@ximian.com>
749
750         Fix #608271.
751
752         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
753         clear_breakpoint() on all breakpoint events and remove them from the list.
754
755 2010-05-27  Martin Baulig  <martin@ximian.com>
756
757         Fix #605698.
758
759         * debugger-agent.c (method_commands, type_commands): Temporarily
760         set the appdomain while executing this method; do all metadata
761         calls in the debuggee's appdomain where user assemblies are loaded.
762
763 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
764
765         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
766
767 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
768
769         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
770
771 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
772
773         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
774         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
775         be referenced even after the header is freed.
776
777         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
778         section.
779
780 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
781
782 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
783
784         * genmdesc.c (main): Fixing the detection of the nacl switch.
785
786         Code is contributed under MIT/X11 license.
787
788 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
789
790         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
791
792         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
793
794         * mini.h (LLVM_CHECK_VERSION): New helper macro.
795
796 2010-05-25  Miguel de Icaza  <miguel@novell.com>
797
798         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
799         the Perl program
800
801         * genmdesc.c: Added support for nacl: key on the machine
802         description files to support the extra space required by Google
803         Native Client.
804
805 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
806
807         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
808
809 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
810
811         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
812         mono_runtime_class_init_full ().
813         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
814
815 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
816
817         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
818
819 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
820
821         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
822         two are not the same on ilp32.
823
824 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
825
826         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
827         added by mistake.
828
829         * mini-ppc.c: Fix the DISABLE_JIT build.
830
831 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
832
833         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
834         (make_writable): Remove this unused function.
835
836 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
837
838         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
839         structure. Make the labels to plt entries local symbols instead of assembler local
840         labels, since tha latter causes problems for the iphone linker.
841
842 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
843
844         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
845
846 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
847
848         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
849         (ppc_patch_full): Ditto.
850
851         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
852
853         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
854         if gshared is enabled, to avoid asserts in the trampoline code.
855
856         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
857         on ia64.
858
859 2010-05-15  Geoff Norton  <gnorton@novell.com>
860
861         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
862         xdebug mode.
863
864 2010-05-14  Geoff Norton  <gnorton@novell.com>
865
866         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
867         misaligned stack on darwin.
868
869 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
870
871         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
872         arm.
873
874 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
875
876         * xdebug.c: Fix ARM support.
877
878 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
879
880         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
881         and do most of the work on the normal stack.
882         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
883
884 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
885
886         * aot-compiler.c: Put non-code data into the .rodata section on linux.
887
888 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
889
890         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
891
892 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
893
894         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
895         and do most of the work on the normal stack.
896
897 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
898
899         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
900         and do most of the work on the normal stack even if sigaltstack is disabled.
901
902 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
903
904         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
905         UCONTEXT_REG_ constants are available on linux as well.
906         (mono_arch_monoctx_to_sigctx): Ditto.
907         (mono_arch_ip_from_context): Ditto.
908
909 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
910
911         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
912         other domains.
913
914 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
915
916         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
917         no longer needed.
918
919 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
920
921         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
922         if a breakpoint cannot be inserted.
923
924 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
925
926         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
927
928 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
929
930         * debugger-agent.c (frame_commands): Return an error instead of asserting if
931         no JIT info is found for the method.
932
933 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
934
935         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
936         in debug printf.
937
938 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
939
940         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
941         a list of arch specific trampolines.
942
943         * aot-compiler.c (emit_trampolines): Use it.
944
945 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
946
947         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
948         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
949         get rid of the _full from their name.
950
951 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
952
953         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
954         get_nullified_class_init_trampoline to remove some code duplication.
955
956 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
957
958         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
959         attach.
960
961 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
962
963         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
964
965         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
966
967         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
968         there is no need to jump through the first plt entry.
969
970         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
971
972         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
973         arch-specific function.
974         (mono_aot_get_plt_info_offset): Ditto.
975
976         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
977         mono_arch_init () to register jit icalls called from full-aot trampolines.
978         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
979         to mini-<ARCH>.c.
980
981         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
982         the specialized throw corlib exception trampoline, use a variant of the normal
983         trampoline along with a new C function which does the call to
984         mono_exception_from_token (), just like on x86.
985
986 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
987
988         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
989         Reorganize the full aot trampoline creation functions, instead of taking a bunch
990         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
991         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
992         creation functions on architectures which have the full-aot ones.
993
994 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
995
996         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
997
998 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
999
1000         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
1001         explicitly, this seems to be required by some gcc versions at -O2.
1002
1003         * mini-arm.c: Ditto.
1004
1005 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
1006
1007         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
1008         has_target delegate invokes.
1009
1010 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
1011
1012         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
1013         info fields.
1014
1015         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
1016         add patches/unwind info arguments, move to mini.c.
1017
1018         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
1019
1020 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
1021
1022         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
1023         command which returns full path names.
1024
1025 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1026
1027         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
1028         code_size output variable.
1029
1030         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
1031         mono_get_lmf_addr.
1032         
1033 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1034
1035         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
1036         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
1037         (mono_arch_cpu_enumerate_simd_versions): Ditto.
1038
1039 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1040
1041         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
1042         apple assembler.
1043
1044 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1045
1046         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
1047
1048 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1049
1050         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
1051
1052 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
1053
1054         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
1055
1056 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1057
1058         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
1059         line number support works with eglib.
1060
1061 2010-04-27  Miguel de Icaza  <miguel@novell.com>
1062
1063         * driver.c, mini.c: Since linking with LLVM makes the default Mono
1064         dirty an extra 70kb pages on startup we are now going to choose a
1065         different strategy: ship mono and mono-llvm binaries, with the
1066         second being the one that links with LLVM and defaults to LLVM
1067         being enabled.
1068
1069 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1070
1071         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
1072         Implement full-aot support on x86.
1073
1074         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
1075         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
1076         the first register returned by get_global_int_regs ().
1077
1078         * cpu-x86.md: Fix the length of insertx_u1_slow.
1079
1080         * iltests.il.in: Disable tail call tests when running with full-aot.
1081
1082 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
1083
1084         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
1085
1086 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1087
1088         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
1089         in the initializer, because it's non-constant.
1090
1091 2010-04-23  Miguel de Icaza  <miguel@novell.com>
1092
1093         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
1094         of LLVM on by default.   Used for buildbots and other setups.
1095
1096 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
1097
1098         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
1099
1100 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
1101
1102         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
1103         initonly static fields when using moving GC.
1104
1105         Contributed under MIT/X11 license.
1106
1107 2010-04-23  Geoff Norton  <gnorton@novell.com>
1108
1109         * mini-amd64.h: Darwin x86_64 support.
1110
1111 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
1112
1113         * exceptions-arm.c: Remove platform checks in favor of configure checks.
1114
1115 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
1116
1117         * exceptions-arm.c: Add Android support for sigcontext structure.
1118
1119 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1120
1121         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
1122         wrappers correctly now that their wrapper info is NULL.
1123
1124 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1125
1126         * mini.c (mono_jit_compile_method_inner): Avoid calling
1127         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
1128
1129 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1130
1131         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
1132         so the latter can be #ifndef DISABLE_JIT-ed.
1133
1134         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
1135
1136 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1137
1138         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
1139
1140 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1141
1142         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
1143         stack.
1144
1145 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
1146
1147         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
1148         calling mono_class_num_methods (). Fixes #592244.
1149
1150 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1151
1152         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
1153
1154         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
1155
1156 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1157
1158         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
1159         version.
1160         * (handle_alloc): Ditto.
1161         (mono_method_to_ir): Remove the constrained call restriction added by a previous
1162         change, its not needed anymore.
1163
1164 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
1165
1166         * mini-posix.c (sigusr1_signal_handler): Fix build on
1167         non x86/amd64 systems.
1168
1169 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1170
1171         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
1172         calls where the constrained class needs a context. Fixes #595863.
1173
1174         * iltests.il.in: Add a test.
1175
1176 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1177
1178         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
1179         2.6/SVN seems to have broken support for them.
1180
1181 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1182
1183         * mini-llvm.c: Fix support for LLVM 2.6.
1184
1185 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
1186
1187         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
1188         MonoInternalThread belonging to the thread.
1189
1190 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
1191
1192         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
1193         unsafe optimization that will remove bound checks.
1194
1195 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
1196
1197         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
1198         CompareExchange not to be inlined for I8.
1199
1200         Contributed under MIT/X11 license.
1201
1202 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1203
1204         * array.cs: Add tests for cast between primitive array types.
1205
1206 2010-04-07 Andreia Gaita  <avidigal@novell.com>
1207
1208         * Makefile.am: create a convenience library for moon to link with
1209
1210 2010-04-07 Paolo Molaro <lupus@ximian.com>
1211
1212         * method-to-ir.c: optimize array accesses from generic interfaces.
1213
1214 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1215
1216         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1217
1218 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1219
1220         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1221         of marshalbyref classes.
1222
1223         Fixes #515884.
1224
1225 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1226
1227         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1228         information.
1229
1230         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1231         information.
1232
1233         * mini.h: Increase AOT version.
1234
1235 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1236
1237         * mini-x86.h: Only enable soft debugger when using sigaction or on
1238         Windows. Fixes build on Haiku (lacks siginfo_t).
1239
1240         Code is contributed under MIT/X11 license.
1241
1242 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1243
1244         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1245         BeOS-style signal handlers.
1246
1247         Code is contributed under MIT/X11 license.
1248         
1249 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1250
1251         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1252
1253 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1254
1255         * mini-exceptions.c: Fix win32 build.
1256
1257 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1258
1259         * mini.c, driver.c: Call mono_gc_base_init() before
1260         mono_debug_init().
1261
1262 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1263
1264         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1265         call_method]): Delegate the actual work in security-core-clr.c
1266         to ease code sharing.
1267
1268 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1269
1270         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1271         float conv.ovf.un opcodes are encountered, instead of asserting later.
1272         Fixes #566296.
1273
1274 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1275
1276         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1277
1278         * iltests.il.in: Add a test.
1279
1280 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1281
1282         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1283         large. Fixes #567040.
1284
1285         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1286
1287 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1288
1289         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1290         #592711.
1291
1292 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1293
1294         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1295         mono_create_handler_block_trampoline with the proper #ifdef so that it
1296         compiles on amd64.
1297
1298 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1299
1300         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1301         allows to select if it's new or old context that is passed to 
1302         the callback.
1303
1304         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1305         case when executing a guarded handler from the EH machinery.
1306
1307         * mini-exceptions.c (mono_install_handler_block_guard): New function
1308         responsible for checking for handler blocks, installing the guard and
1309         clearing abort state.
1310
1311         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1312         to check for handler blocks and skip interruption logic if one was found.
1313
1314         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1315         by the handler block guard trampoline. Resumes interruption by raising the
1316         pending ThreadAbortException.
1317
1318         * mini.c (create_jit_info): Calculate the end address of a finally block.
1319
1320         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1321         of a finally block to a specified address and return the old one.
1322
1323         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1324         trampoline patches the original return address and calls the trampoline function.
1325
1326 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1327
1328         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1329
1330         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1331         does the patching if the callee is in the same domain.
1332
1333         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1334         of mono_arch_patch_plt_entry ().
1335
1336 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1337
1338         * mini.c (create_jit_info): Fix try block hole length encoding.
1339
1340 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1341
1342         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1343         duplicate information and print offsets instead of absolute addresses.
1344
1345 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1346
1347         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1348         event is sent. Fixes #591733.
1349
1350 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1351
1352         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1353         OpenBSD.
1354
1355 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1356
1357         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1358         thread_to_tls hash table.
1359
1360         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1361         section. Fixes #591000.
1362
1363 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1364
1365         * Makefile.am (version.h): Check for pure .git directory only,
1366         fixes SVN revision when using git without git-svn.
1367
1368         Contributed under MIT/X11 license.
1369
1370 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1371
1372         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1373
1374 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1375
1376         * basic-simd.cs: Test for vector x scalar binary operators.
1377
1378 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1379
1380         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1381         intrinsics with expanded scalar arguments.
1382
1383 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1384
1385         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1386         don't have an exception class, so don't decode it. This would crash
1387         with filter clauses.
1388
1389 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1390
1391         Make sure that trunk builds with DISABLE_JIT, an update to the
1392         PlayStation 3 port.
1393         
1394         * mini.c (mini_get_shared_method): this code seems to be necessary
1395         regardless of whether DISABLE_JIT has been defined.
1396
1397         (mono_jit_compile_method_inner): it seems that this method is
1398         required even in full AOT mode, so ifdef out only the pieces that
1399         try to genrate code (the body of code that applies patches to the
1400         code).  
1401
1402         (mini_method_compile): do not compile when using DISABLE_JIT.
1403
1404         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1405         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1406         compile when DISABLE_JIT is set.
1407
1408 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1409
1410         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1411         arch really supports it.
1412
1413 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1414
1415         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1416
1417 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1418
1419         * exceptions-s390x.c: Add support for
1420         mono_arch_get_throw_corlib_exception and fix throw by name.
1421
1422         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1423         logic (especially for varargs); Correct localloc sizing; Add
1424         mono_arch_get_this_arg_from_call and
1425         mono_arch_get_this_arg_from_call.
1426
1427         * mini-s390x.h: Add support for facility list extraction;
1428         Correct/update MONO_ARCH_xxx settings.
1429
1430         * mini-s390.c: Minor corrections to instruction output for
1431         varargs. No IMT implementation - I think it's time to deprecate
1432         s390 and just leave s390x.
1433
1434         * tramp-s390x.c: Correct creation of trampoline instruction
1435
1436
1437         * cpu-s390x.md: Update some instruction lengths
1438
1439 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1440
1441         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1442         can be hit with partial sharing.
1443
1444         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1445         in non-shared classes correctly.
1446         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1447         Turn on partial sharing.
1448
1449 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1450
1451         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1452         by mistake.
1453
1454 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1455
1456         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1457         mono_method_signature ().
1458
1459         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1460
1461         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1462         error checking, so later calls do not need error checking.
1463
1464 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1465
1466         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1467
1468         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1469
1470 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1471
1472         * mini-exceptions.c (mono_handle_exception_internal): Don't
1473         check try_end for archs different than s390. 
1474
1475         * mini.c (create_jit_info): Don't crash if the finallt block is the
1476         last one.
1477
1478 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1479
1480         * driver.c (mono_main): Don't free global codeman under linux since
1481         glic now peeks at code on stack for more archs than just amd64.
1482
1483 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1484
1485         * mini.c, method-to-ir.c: changes to support compressed interface
1486         bitmaps.
1487
1488 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1489
1490         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1491         Use sigaction on OpenBSD too.
1492
1493 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1494
1495         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1496
1497 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1498
1499         * debugger-agent.c: #include sys/select.h for fd_set.
1500
1501         Code is contributed under MIT/X11 license.
1502
1503 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1504
1505         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1506         (openbsd+amd64 ?).
1507
1508 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1509
1510         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1511         some large methods with lots of exception handlers. Fixes #440924.
1512
1513 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1514
1515         * method-to-ir.c: remove code duplication for interface checks.
1516
1517 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1518
1519         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1520         (assembly_unload): Clear all event requests referencing the to-be unloaded
1521         assembly.
1522
1523
1524 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1525
1526         * mini.h, mini-exceptions.c: restore the state of the stack
1527         guard page permissions.
1528
1529 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1530
1531         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1532         call site patching code, it doesn't appear to be needed.
1533
1534 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1535
1536         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1537         sharing generic methods whose type arguments are a mix of reference and
1538         non-reference types. Not yet turned on.
1539
1540         * mini.c (mini_get_shared_method): New helper function to return
1541         the method which will be compiled/registered in the JIT tables when doing
1542         generic sharing.
1543         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1544         use mini_get_shared_method ().
1545
1546         * mini.c (mini_method_compile): Register the same method which is compiled when
1547         doing generic sharing.
1548
1549         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1550
1551         * generics.cs: Add partial sharing tests.
1552
1553 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1554
1555         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1556                    Add an enum value that or's all possable values together. Add an enum value
1557                    that marks the end of the used bit indexes.
1558
1559         * mini-amd64.c : Make changes to match the changes in mini.h 
1560
1561         * mini-x86.c : Make changes to match the changes in mini.h
1562
1563         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1564                    simd_version to support more simd versions. Changed the name of
1565                    simd_version to simd_version_flags to make it more intuitive that
1566                    it now contains bit flags. Reordered the *_intrinsics arrays to
1567                    match the changes above. Changed emit_intrinsics() to use the new
1568                    setup mentioned above.
1569
1570         Code is contributed under MIT/X11 license.
1571
1572 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1573
1574         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1575         remaining archs. Alpha and hppa maintainers, please stand up.
1576
1577 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1578
1579         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1580         is needed even when fail_tramp!=NULL.
1581
1582 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1583
1584         * debugger-agent.c (insert_breakpoint): Write a log message.
1585
1586 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1587
1588         * iltests.il.in: Add a few tests for LEAVE going over multiple
1589         finally clauses.
1590
1591 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1592
1593          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1594
1595 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1596
1597         * mini.h (MonoBasicBlock): Add native_length field.
1598         * mini.h (MonoCompile): Add try_block_holes field.
1599         * mini.h (MonoInst): Add exception_clause pointer to
1600         the data union.
1601
1602         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1603         * mini.c (mono_cfg_add_try_hole): New function to register possible
1604         holes in try blocks.
1605         * mini.c (create_jit_info): Fill in the holes information.
1606
1607         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1608         by a try block.
1609
1610         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1611
1612 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1613
1614         * jit-icalls.c: adjusted for the array API changes.
1615
1616 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1617
1618         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1619
1620 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1621
1622         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1623         the 'pending' flag. This fixes support for appdomains too.
1624
1625
1626 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1627
1628         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1629
1630 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1631
1632         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1633         when using LLVM, LLVM generates it itself when needed.
1634
1635         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1636
1637         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1638         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1639         OP_ANDNPS/OP_ANDNPD.
1640
1641 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1642
1643         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1644         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1645         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1646
1647 2010-03-11  Martin Baulig  <martin@ximian.com>
1648
1649         * debugger-agent.c (type_commands): Add NULL check to
1650         `CMD_TYPE_GET_SOURCE_FILES'.
1651
1652 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1653
1654         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1655
1656 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1657
1658         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1659         #586664.
1660
1661         * iltests.il.in: Add a test.
1662
1663 2010-03-05  Martin Baulig  <martin@ximian.com>
1664
1665         Add support for aborting invocations.
1666
1667         * debugger-agent.c
1668         (InvokeData): Added `InvokeData *last_invoke'.
1669         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1670         added a new `invoke' field to keep the `InvokeData *' throughout
1671         the invocation.
1672         (ErrorCode): Added `ERR_NO_INVOCATION'.
1673         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1674         (mono_debugger_agent_handle_exception): Don't report any exception
1675         if an abort was requested.
1676         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1677         a thread abort if necessary.
1678         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1679
1680 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1681
1682         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1683         so we can release the whole list and not just the first one. Free
1684         it in more places as well.
1685
1686 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1687
1688         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1689
1690 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1691
1692         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1693
1694 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1695
1696         * driver.c: report also other misc build options.
1697
1698 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1699
1700         * method-to-ir.c: Generate better code for the NewObject
1701         intrinsic.
1702         
1703 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1704
1705         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1706         is disabled. Fixes #582322.
1707
1708         * iltests.il.in: Add a test.
1709
1710 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1711
1712         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1713         the handling of obj->synchronization == null and owner != current thread to
1714         mono_monitor_exit ().
1715
1716         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1717
1718
1719 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1720
1721         * mini.c: change the way emulated opcode info is stored and save about
1722         4 KB of runtime memory.
1723
1724 2010-03-04  David S. Miller  <davem@davemloft.net>
1725
1726        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1727        that don't provide the siginfo in the second signal handler argument
1728        are buggy, and this has been fixed for years.
1729        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1730        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1731
1732 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1733
1734         * aot-runtime.c (find_symbol): Fix a leak.
1735         (decode_patch): Ditto.
1736
1737 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1738
1739         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1740
1741 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1742
1743         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1744
1745 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1746
1747         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1748
1749 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1750
1751         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1752         to check for errors, it's enough to create the metadata open.
1753
1754         Fixes #562150
1755
1756 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1757
1758         * trace.c|h:
1759         * mini-exceptions.c: Add support for printing stack traces when handling
1760         exceptions, and when printing exceptions thrown while tracing also print
1761         the exception message.
1762
1763 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1764
1765         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1766         since the exclude token is a valid string character.
1767
1768 2010-03-02  Levi Bard  <levi@unity3d.com>
1769
1770         * debugger-agent.c: Invalidate thread stacks on domain unload.
1771
1772 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1773
1774         * method-to-ir.c: Emit dummy_use for stored reference after write
1775         barriers to make sure the object is pinned if the GC interrupts
1776         before the write barrier is done.
1777
1778 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1779
1780         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1781
1782 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1783
1784         * debugger-agent.c: Add a log message printing the protocol version.
1785
1786 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1787
1788         * debugger-agent.c: Add a new command to communicate the protocol version used
1789         by the client. This could be used to allow newer runtimes to communicate with
1790         older clients.
1791
1792 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1793
1794         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1795
1796 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1797
1798         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1799         type.
1800
1801 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1802
1803         * mini-arm.c: make the arm cpu arch configurable with the
1804         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1805         Bug #584198.
1806
1807 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1808
1809         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1810         support for the perf tool on Linux.
1811
1812 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1813
1814         * method-to-ir.c: make string.InsertenalSetChar() specialization
1815         effective.
1816
1817 2010-03-01  Robert Jordan  <robertj@gmx.net>
1818
1819         * Makefile.am: fix the non-static build.
1820
1821 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1822
1823         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1824         here.
1825
1826 2010-02-26  Robert Jordan  <robertj@gmx.net>
1827
1828         * tasklets.c (continuation_store): Return from an error condition
1829         immediately.
1830
1831 2010-02-26  Martin Baulig  <martin@ximian.com>
1832
1833         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1834
1835         * debug-mini.c
1836         (MonoDebuggerThreadInfo): Added `internal_flags'.
1837         (MonoDebuggerInternalThreadFlags): New enum.
1838         (_mono_debugger_throw_exception): Don't signal the debugger if a
1839         type abort was requested.
1840         (_mono_debugger_unhandled_exception): Likewise.
1841         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1842         (mono_debugger_runtime_invoke): If the debugger requested a thread
1843         abort during the invocation, reset it here.
1844
1845 2010-02-26  Martin Baulig  <martin@ximian.com>
1846
1847         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1848         instead of `MonoThread *'.
1849
1850 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1851
1852         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1853         code offsets table, as it is mostly sorted.
1854
1855 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1856
1857         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1858         Fixes #582991.
1859
1860 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1861
1862         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1863
1864 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1865
1866         * Makefile.am: build the new ABI version of the libmono library.
1867         * debugger-agent.c, mini.c: fix warnings with the new API.
1868         * jit.h: don't depend on glib.h being included.
1869
1870 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1871
1872         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1873
1874 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1875
1876         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1877         ThreadStatic variables.
1878
1879 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1880
1881         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1882         data is not freed yet. Fixes #582460.
1883
1884 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1885
1886         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1887         event requests. Bump protocol minor version.
1888
1889 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1890
1891         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1892
1893 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1894
1895         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1896         #581950.
1897
1898         * iltests.il.in: Add a test.
1899
1900 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1901
1902         * mini.c (inline_method): Check for loader errors.
1903
1904 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1905
1906         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1907         instead of mono_method_get_header as it doesn't decode locals
1908         so the called method can have unresolved dependencies that will only
1909         be satisfied after the current method is JIT'd.
1910
1911         Fixes #550968.
1912
1913 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1914
1915         * basic.cs (test_0_div_opt): Speed this up a bit.
1916
1917 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1918
1919         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1920
1921         * mini.c (mono_jit_create_remoting_trampoline): Call
1922         mono_create_specific_trampoline () instead of
1923         mono_arch_create_specific_trampoline ().
1924
1925         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1926
1927 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1928
1929         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1930         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1931
1932         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1933
1934         * mini-amd64.c: Fix DISABLE_JIT support.
1935
1936 2010-02-20  Geoff Norton  <gnorton@novell.com>
1937
1938         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1939
1940 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1941
1942         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1943         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1944         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1945         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1946         handle_exception.
1947
1948 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1949
1950         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1951         edx/ecx too. This is needed to support OP_SEQ_POINT.
1952
1953 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1954
1955         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1956
1957         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1958
1959 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1960
1961         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1962         LLVM+AOT+exceptions, not enabled yet.
1963
1964 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1965
1966         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1967
1968 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1969
1970         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1971         xdebug info for these.
1972
1973         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1974         in a few places.
1975
1976         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1977         not used yet.
1978
1979 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1980
1981         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1982
1983 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1984
1985         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1986         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1987
1988         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1989         for mtouch.
1990
1991 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1992
1993         * debugger-agent.c: handle incomplete reads and EINTR in
1994         recv()/send(). This could have been causing random
1995         disconnections.
1996
1997 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1998
1999         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
2000         points.
2001
2002         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
2003         so they have small offsets. Fixes #566311.
2004
2005 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
2006
2007         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
2008
2009 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
2010
2011         * mini-amd64.c: Remove the special casing of byref in a few places now that
2012         mini_type_get_underlying_type () handles it.
2013
2014         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
2015         by returning native int. Fixes #577984.
2016
2017 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
2018
2019         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
2020         a macro.
2021
2022         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
2023         of putting the clause itself.
2024
2025         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
2026
2027 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
2028
2029         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
2030         might be unaligned.
2031
2032 2010-02-10  Geoff Norton  <gnorton@novell.com>
2033
2034         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
2035
2036 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2037
2038         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
2039         llvm methods too.
2040
2041         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
2042         it is not an LLVM generated symbol.
2043
2044         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
2045
2046         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
2047         implementation in gshared mode because it causes regressions.
2048
2049         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
2050
2051         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
2052         should be done by the caller.
2053
2054         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
2055
2056         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
2057
2058         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
2059         since mono_jit_info_table_find () doesn't do it anymore.
2060
2061         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
2062         instead of mono_jit_info_table_find ().
2063
2064 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2065
2066         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
2067
2068         * aot-compiler.c (encode_method_ref): Update after the removal of
2069         mono_gc_get_managed_allocator_type ().
2070
2071         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
2072         Fixes #564538.
2073
2074 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
2075
2076         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
2077         generic params as well.
2078         (handle_isinst): Ditto.
2079
2080         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
2081         instead of always calling an icall.
2082
2083         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
2084         computing the size of the got.
2085
2086         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
2087         when using LLVM. Instead of emitting it as an LLVM method, emit it using
2088         the assembly directive '.set' so it points to the first LLVM emitted method.
2089
2090 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2091
2092         * mini.c (mini_method_verify): Report the method which failed to verify.
2093
2094 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2095
2096         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
2097         to avoid JIT'ng dead basic blocks. This is the same behavior as the
2098         runtime MS verifier.
2099
2100 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2101
2102         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
2103         #561962.
2104
2105 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2106
2107         * mini-llvm.c: Init the jit module only when first JITting.
2108
2109         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
2110
2111         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
2112
2113         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
2114         replaced with the real got.
2115
2116         * debugger-agent.c (type_commands): Return the enumness if the type as well.
2117
2118         * image-writer.c: Reduce the amount of #ifdefs a bit.
2119
2120         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
2121         llvm on darwin/arm.
2122
2123         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
2124
2125         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
2126         global.
2127
2128 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2129
2130         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
2131         (mono_llvm_emit_method): Fix unaligned stores too.
2132
2133         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
2134         so async stack walks don't crash.
2135
2136 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2137
2138         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
2139         was not patched if the callee needed an rgctx trampoline.
2140
2141 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2142
2143         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
2144         vtable address in AOT code.
2145
2146 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2147
2148         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
2149         MonoInst's.
2150
2151 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
2152
2153         * genmdesc.pl: remove dependency on external cpp.
2154
2155 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2156
2157         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
2158         using LLVM, its not needed, and abcrem can't handle it.
2159
2160 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
2161
2162         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
2163         it easier to group instructions and reduce duplication.
2164
2165 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2166
2167         * decompose.c: Move the array/soft float decompose routines here from
2168         method-to-ir.c.
2169
2170         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
2171
2172 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
2173
2174         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
2175         to tell LLVM that the got is constant, not used yet.
2176
2177         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
2178
2179 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2180
2181         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
2182         managed wrappers.
2183
2184 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2185
2186         * aot-compiler.c (add_wrappers): Commit the hack which generates
2187         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
2188         custom attribute.
2189
2190 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2191
2192         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
2193         a fault, only used by the LLVM backend.
2194
2195         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
2196         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
2197
2198         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
2199         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
2200
2201         * mini-llvm.c: Only generate volatile loads from load instructions which have
2202         the MONO_INST_FAULT flag set.
2203
2204 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2205
2206         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
2207         64 bit platforms.
2208
2209 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2210
2211         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
2212         sequence points. Fixes #571236.
2213
2214 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2215
2216         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2217         end of the appdomain unload process, after assemblies have been unloaded.
2218         Fixes #574842.
2219
2220 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2221
2222         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2223         works.
2224
2225         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2226         Fixes #573988.
2227
2228 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2229
2230         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2231
2232 2010-01-26  Geoff Norton  <gnorton@novell.com>
2233
2234         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2235         with struct marshalability.
2236
2237 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2238
2239         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2240         it supports class names as well.
2241
2242         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2243         needed by the GC map code.
2244
2245         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2246         flags if needed.
2247
2248         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2249         if cfg->init_ref_vars is set.
2250
2251         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2252         cfg->disable_initlocals_op_refs is set.
2253
2254         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2255         using liveness info if cfg->compute_precise_live_ranges is set.
2256
2257         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2258         volatile variables correctly. Add comments about the live ranges. Not enabled
2259         yet.
2260
2261 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2262
2263         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2264         0x2a into them in method prologs.
2265
2266         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2267
2268 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2269
2270         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2271         classes, since llvm is compiled with -fno-rtti.
2272
2273         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2274
2275         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2276         llvm does not require it.
2277
2278         * aot-runtime.c (load_method): Print the full name of the last aot method.
2279
2280 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2281
2282         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2283         thread has not fully started yet.
2284
2285 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2286
2287         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2288
2289 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2290
2291         * driver.c: Do not abort if LLVM is not supported, print a
2292         warning and add the information to the Mono JIT information.
2293
2294 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2295
2296         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2297         using explicit null checks.
2298
2299 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2300
2301         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2302         related code.
2303
2304         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2305         () in one place.
2306         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2307         its no longer needed.
2308
2309         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2310
2311         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2312         define for platforms still using it (s390). Get rid of the
2313         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2314
2315         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2316         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2317
2318         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2319         the caller pushed the arguments.
2320
2321         * mini-llvm.c: Enable throwing exceptions on x86.
2322
2323         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2324         "Thread (nil) may have been prematurely finalized" messages if this is called
2325         on a thread not registered with the runtime.
2326
2327         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2328
2329 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2330
2331         * jit-icalls.c (mono_array_new_3): New jit icall.
2332
2333         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2334
2335         * arrays.cs: Add a test for 3 dimensional arrays.
2336
2337 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2338
2339         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2340         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2341         used.
2342
2343         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2344         thrown on x86.
2345
2346         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2347
2348         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2349
2350         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2351
2352 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2353
2354         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2355           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2356
2357         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2358
2359         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2360
2361         Code is contributed under MIT/X11 license.
2362
2363 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2364
2365         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2366
2367         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2368
2369         * mini.c (mini_method_compile): Set the new flag when running under the
2370         debugger.
2371
2372 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2373
2374         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2375         a ref/noref value + a global pin flag, so parts of stack frames can still be
2376         precisely marked even if they include stuff which needs pinning. Improve logging.
2377         Fix many bugs. Not enabled yet.
2378
2379         * gc-test.cs: Add a few tests.
2380
2381         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2382         the normal -v options. Avoid propagating liveness information through bblocks
2383         which end with a NOT_REACHED opcode.
2384
2385         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2386         after cfg has been freed.
2387
2388 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2389
2390         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2391         if a clause is skipped because it uses the exception object, since it could
2392         have caught the exception.
2393
2394         * exceptions.cs: Add a test.
2395
2396 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2397
2398        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2399
2400         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2401         ICollection<T> wrappers.
2402
2403 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2404
2405         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2406
2407 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2408
2409         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2410         NOMAP32BIT or optimize_for_xen is set.
2411
2412 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2413
2414         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2415         mono_metadata_str_hash () instead.
2416
2417 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2418
2419         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2420         sizeof (void*).
2421
2422         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2423
2424 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2425
2426         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2427         flag is set.
2428
2429         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2430         throwing code correctly.
2431
2432         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2433
2434 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2435
2436         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2437         ftnptrs created by us, handle RGCTX_FETCH correctly.
2438         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2439
2440         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2441         ftnptr added by mono_aot_get_named_code ().
2442
2443 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2444
2445         * mini-arm.c: Fix a few LLVM problems.
2446
2447         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2448
2449 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2450
2451         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2452         AOT compiling.
2453
2454 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2455
2456         * jit.h, method-to-ir.c: added ability to set the policy for
2457         inserting breakpoints from the break IL instruction or the
2458         Debugger.Break () API call.
2459
2460 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2461
2462         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2463         assemblies need to be eagerly loaded.
2464
2465 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2466
2467         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2468
2469 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2470
2471         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2472         an argument which matches any exception.
2473
2474 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2475
2476         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2477         optimization if the called method is gshared and marshalbyref, since gshared
2478         methods can' have wrappers. Fixes #569390.
2479
2480         * generics.cs: Add a test.
2481
2482 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2483
2484         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2485         callable from gdb.
2486
2487 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2488
2489         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2490
2491 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2492
2493         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2494         since it is not supported in win2000.
2495
2496 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2497
2498         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2499         error if loading an assembly fails.
2500         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2501
2502         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2503         if exists.
2504
2505         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2506         compiled methods.
2507
2508         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2509
2510         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2511         is not supported yet.
2512
2513         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2514
2515 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2516
2517         * method-to-ir.c: All types with variant arguments must fallback to the
2518         slow path. This makes cast of variant delegates work.
2519
2520         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2521         argument that is set to TRUE is the returned vtable slot is for a variant
2522         interface. Changed a g_print + g_assert_not_reached to a g_error.
2523
2524         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2525         a similar fashion of generic virtual methods.
2526
2527 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2528
2529         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2530         when cfg is null.
2531
2532         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2533         method using a variance aware function.
2534
2535         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2536
2537 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2538
2539         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2540         do an icall for now.
2541
2542 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2543
2544         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2545         If LLVM decides to set the code model to Large, reset it to Default.
2546
2547 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2548
2549         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2550         stripped binaries as well.
2551
2552 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2553
2554         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2555         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2556
2557         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2558         reg.
2559
2560 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2561
2562         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2563         separate function.
2564
2565         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2566         as the type info to llvm.eh.selector.
2567         (exception_cb): Use the type info for filling out some fields of
2568         MonoJitExceptionInfo like the flags and the exception class. This is needed
2569         because the LLVM produced exception handling clauses might not match the original
2570         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2571
2572         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2573         separate function. Add an extra argument which returns the type infos
2574         corresponding to the exception clauses.
2575
2576         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2577         exception handling clauses.
2578
2579 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2580
2581         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2582         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2583         to fix an AOT case.
2584
2585 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2586
2587         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2588         internal assembly.
2589
2590 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2591
2592         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2593         llvm code.
2594
2595 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2596
2597         * mini.c (mini_method_compile): Verify the method before calling
2598         mono_compile_create_vars as this might crash since it uses method
2599         information.
2600
2601         Fixes #560196.
2602
2603 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2604
2605         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2606         one case if AOTing, since the class might not be a concrete class.
2607
2608 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2609
2610         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2611         functions which are now defined in mempool-internals.h.
2612
2613         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2614
2615         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2616
2617 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2618
2619         * mini.c:
2620         * method-to.ir.c:
2621         * mini-*.c: Properly handle generic enums.
2622
2623         Fixes #566294
2624
2625 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2626
2627         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2628         in a few more places.
2629
2630 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2631
2632         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2633         nullable parameters. Fixes #567351.
2634
2635 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2636
2637         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2638
2639 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2640
2641         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2642         mono_get_generic_context_from_code () call.
2643
2644         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2645
2646 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2647
2648         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2649         needed.
2650
2651 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2652
2653         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2654         mono_method_get_signature returns NULL. Fix #567084
2655
2656 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2657
2658         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2659         instead of once for each module.
2660
2661 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2662
2663         * debugger-agent.c (ss_start): Implement step over for the last sequence
2664         point in methods.
2665
2666         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2667         have the STEP_LOC flag set.
2668
2669         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2670         fails. Fixes #566689.
2671
2672 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2673
2674         * mini.c (mono_add_seq_point): New helper function.
2675         (mono_save_seq_point_info): New function to save sequence point info, extracted
2676         from mini_method_compile ().
2677
2678         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2679
2680         * mini.h (MonoSeqPointInfo): New structure containing information about
2681         the sequence points of a JITted method.
2682         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2683         'bucket' field.
2684
2685         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2686         point information is stored, use a MonoSeqPointInfo structure instead of a
2687         GPtrArray. For each seq point, compute a list of successor seq points.
2688
2689         * debugger-agent.c: Use the successor list to implement step-over more
2690         efficiently: instead of single stepping until a different line/IL offset is
2691         reached, place breakpoints into all successor seq points.
2692
2693         * mini.h: Bump AOT file format version.
2694
2695 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2696
2697         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2698
2699         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2700
2701 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2702
2703         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2704         build.
2705
2706 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2707
2708         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2709         alloca as g_malloc is not signal safe.
2710
2711 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2712
2713         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2714         VALGRIND_DISCARD_TRANSLATIONS.
2715
2716         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2717         checks, they are no longer needed.
2718
2719         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2720         a function into a sigctx which can handle function pointers.
2721
2722         * mini-ppc.c: Implement soft debugger support on ppc64.
2723
2724         * mini-ppc.c: Implement soft debugger support.
2725
2726 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2727
2728         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2729
2730 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2731
2732         * mini.c (mono_get_runtime_build_info): include Mono version in
2733         the returned value.
2734
2735         * driver.c (mono_main): VERSION is now included in the string
2736         returned from mono_get_runtime_build_info()
2737
2738 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2739
2740         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2741         signatures. Fixes #565143.
2742
2743         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2744
2745 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2746
2747         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2748
2749 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2750
2751         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2752         making max stack 10x smaller.
2753
2754 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2755
2756         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2757
2758 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2759
2760         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2761
2762 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2763
2764         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2765         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2766
2767         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2768
2769         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2770
2771         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2772
2773         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2774         the compilation.
2775
2776 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2777
2778         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2779         raise an invalid program exception.   
2780
2781         For other opcodes that we might not handle use a g_warning and
2782         raise the exception.   Beats termination.
2783
2784         Fixes #561724
2785
2786 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2787
2788         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2789
2790         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2791         by merging the LLVM and !MAP_32BIT cases.
2792
2793 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2794
2795         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2796         sigctx being passed in, as we have no CONTEXT available in the APC.
2797
2798         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2799         for now.
2800
2801         Code contributed under MIT/X11 license.
2802
2803 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2804
2805         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2806         in the LLVM backend on AMD64.
2807
2808         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2809         FDE.
2810
2811         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2812
2813         * mini-llvm.c: Export mono_personality for AOT.
2814
2815         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2816
2817         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2818         implicit exception can occur.
2819
2820         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2821         OP_IMPLICIT_EXCEPTION instruction.
2822
2823         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2824
2825         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2826
2827         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2828         inside a protected block.
2829
2830         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2831         trampolines doesn't include the argument.
2832
2833         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2834         trampolines on amd64.
2835
2836         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2837         of RDI.
2838
2839         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2840         disabled for methods with clauses.
2841
2842         * mini-llvm.c: Enable support for catch clauses.
2843
2844         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2845         end of an LLVM compiled finally clause.
2846         (mono_handle_exception_internal): Save the exception handling state in TLS
2847         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2848         resume unwinding from that point.
2849
2850         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2851         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2852         to obtain the addresses of the exception handling regions.
2853
2854         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2855         finally clauses are supported.
2856
2857         * mini.c (mini_method_compile): Add support for LLVM code with exception
2858         handlers.
2859
2860 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2861
2862         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2863         proper size.
2864
2865 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2866
2867         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2868         as a primitive type.
2869
2870 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2871
2872         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2873         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2874         #564000.
2875
2876 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2877
2878         * method-to-ir.c (mini_redirect_call): do not redirect the
2879         InternalAllocateStr internal call if string profiling is enabled.
2880
2881 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2882
2883         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2884         generic methods.
2885
2886         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2887         unwind.h header file.
2888
2889         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2890         newer valgrind versions seems to handle this fine.
2891
2892 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2893
2894         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2895         on the debugger thread.
2896
2897 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2898
2899         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2900
2901         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2902
2903         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2904
2905         * cpu-<ARCH>.md: Make call_handler clob:c.
2906
2907         * mini.c: Reenable SSA for methods with clauses.
2908
2909         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2910         as it causes failures on x86.
2911
2912 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2913
2914         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2915         returns NULL (e.g. a bad assembly).
2916
2917 2009-12-08  Geoff Norton  <gnorton@novell.com>
2918
2919         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2920         stepping out into native code.  There were issues with nested invokes
2921         like .cctors.
2922
2923 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2924
2925         * mini.c (mini_method_compile): Do the disable_llvm checks early
2926         and avoid the LLVM compile pass if the checks fail.
2927
2928         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2929
2930         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2931         LLVM optimizations don't try to remove them.
2932
2933         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2934         different file so the original remains.
2935
2936 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2937
2938         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2939
2940         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2941
2942         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2943         support for non-inline unwind descriptors.
2944
2945 2009-12-07  Geoff Norton  <gnorton@novell.com>
2946
2947         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2948         the interrupt_count slightly differently.  Native threads were never
2949         marked as resumed.
2950
2951 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2952
2953         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2954         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2955         yet generate this info.
2956
2957         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2958
2959         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2960         client can distinguish between intptrs and longs.
2961
2962 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2963
2964         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2965         blob.
2966
2967         * aot-runtime.c (load_function): Update after the change above.
2968
2969         * mini.h: Bump AOT file format version.
2970
2971         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2972         if the delegate class is dynamic.
2973
2974         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2975         in gshared code too using the new rgctx info type
2976         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2977
2978 2009-12-04  Geoff Norton  <gnorton@novell.com>
2979
2980         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2981         we need to track the original suspend count so the thread properly
2982         wakes up in resume_thread.
2983
2984 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2985
2986         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2987         code.
2988
2989         * generics.cs: Add a test.
2990
2991         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2992         is 0. Simplify a lot of code using this.
2993
2994         * mini-trampolines.c (mono_delegate_trampoline): Call
2995         mono_create_static_rgctx_trampoline () before saving the final address in
2996         delegate->method_code, to avoid calling it each time a delegate is first called.
2997
2998         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2999         which need static rgctx trampolines.
3000
3001         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
3002         keyed on the method+addr pair, since addr could be either the method addr or
3003         an unbox trampoline in the AOT case. Fixes #560246.
3004
3005 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
3006
3007         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
3008         place it was called before too.
3009
3010 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
3011
3012         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
3013         if no security manager is present, to speed up the AOT case. Call
3014         mono_class_vtable () full with raise_on_error == TRUE instead.
3015
3016 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
3017
3018         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
3019         the local optimization passes can take its result into account. Fixes
3020         #559876.
3021
3022         * exceptions.cs: Add a test.
3023
3024 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
3025
3026         This patch is contributed under the terms of the MIT/X11 license
3027
3028         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
3029
3030 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
3031
3032         * mini.h (MonoInst): Remove unused 'ssa_op' field.
3033
3034         * debugger-agent.c: Rework the handling of stack traces of running threads to
3035         avoid crashes if compute_frames () tries to walk the stack of running thread.
3036
3037         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
3038
3039         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
3040
3041         * mini.h (StackFrameInfo): Add an 'lmf' field.
3042
3043 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
3044
3045         * debugger-agent.c (suspend_current): Always set really_suspended.
3046
3047         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
3048
3049         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
3050
3051 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
3052
3053         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
3054         really suspended.
3055
3056 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
3057
3058         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
3059
3060 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3061
3062         * mini-trampolines.c: Fix MSVC build.
3063
3064 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3065
3066         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
3067
3068 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
3069
3070         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
3071         the instruction following an OP_FCOMPARE is optimized away.
3072
3073 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
3074
3075         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
3076         emit_autoreg () into this arch-specific function.
3077
3078         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
3079         code, it is no longer needed.
3080
3081         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
3082
3083         * mini.h: Bump AOT file format version.
3084
3085         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
3086         using the sorted_code_offsets array, instead of reading it from the
3087         exception debug info.
3088         (load_method): Call mono_aot_find_jit_info instead of
3089         decode_exception_debug_info ().
3090
3091         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
3092         LLVM compiled as a flag.
3093
3094 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
3095
3096         * debugger-agent.c (resume_thread): Fix a warning.
3097
3098         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
3099         generated.
3100
3101 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3102
3103         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
3104         contents to MonoAotFileInfo.
3105
3106 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3107
3108         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
3109         Put all binary data into a giant blob, similarly to the way .net assemblies
3110         store binary data. Emit offset tables in a compact form to reduce their size.
3111
3112         * mini.h: Bump AOT file format version.
3113
3114         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
3115         places.
3116
3117         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
3118         avoid linear searches at runtime.
3119
3120         * aot-runtime.c (find_symbol): Update this to use the hash.
3121
3122         * mini.h: Bump AOT file format version.
3123
3124 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3125
3126         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
3127         container.
3128
3129         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
3130         too.
3131
3132         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
3133         the distribution of got slot types.
3134
3135         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
3136
3137         * method-to-ir.c: Add support for generating explicit null checks.
3138
3139 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
3140
3141         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
3142         on a random thread if possible.
3143
3144         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
3145         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
3146         correctly.
3147
3148         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
3149         regs. Pass the real size of the regs array to mono_unwind_frame ().
3150
3151         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
3152         ones instead.
3153
3154 2009-11-24  Geoff Norton  <gnorton@novell.com>
3155
3156         * mini-darwin.c: Work around apple bug rdar://7209349  See
3157         http://openradar.appspot.com/7209349 for details.  Synopsis,
3158         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
3159         never been initialized before.
3160
3161 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3162
3163         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
3164
3165         * mini-arm.c (mono_arm_thumb_supported): New helper function.
3166
3167 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3168
3169         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
3170         OP_SHL_IMM is not 32 bit.
3171
3172 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3173
3174         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
3175
3176 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3177
3178         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
3179         encountered.
3180
3181         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
3182         > 0 since some threads can resume if their resume_count is > 0.
3183         (invoke_method): Avoid reading freed memory.
3184
3185         * debugger-agent.c (process_suspend): Extract the suspend code from
3186         process_single_step_inner () to a separate function. Rework the code to prevent
3187         races between this function and thread interrupts.
3188
3189         * debugger-agent.c (suspend_current): Check the resume_count field instead
3190         of resume_one so suspends+resumes during single threaded invokes work
3191         correctly.
3192
3193 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3194
3195         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
3196         to make the generated code smaller.
3197
3198         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
3199         sequence generated by recent LLVM versions.
3200
3201         * mini-llvm.c: Add support for a few simple cases which weren't supported
3202         before.
3203
3204         * mini-trampolines.c (mono_magic_trampoline): Don't call
3205         mono_arch_get_vcall_slot () when llvm is enabled.
3206
3207         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
3208
3209         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
3210         into a new function called common_call_trampoline () which is used by the
3211         llvm vcall trampoline as well.
3212
3213         * debugger-agent.c: Implement single threaded invokes.
3214
3215         * debugger-agent.c: Revert change which broke the agent on linux.
3216
3217         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3218         #557606.
3219
3220         * generics.cs: Add a test.
3221
3222 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3223
3224         * debugger-agent.c: Fix the cygwin build.
3225
3226 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3227
3228         * cprop.c: Remove this unused file.
3229
3230 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3231
3232         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3233         #557262.
3234
3235         * basic.cs: Add a test.
3236
3237 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3238
3239         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3240         in one more place.
3241
3242 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3243
3244         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3245         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3246         it. Use this flag to control llvm related code paths instead of #ifdef
3247         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3248         AOT code.
3249
3250         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3251
3252         * mini.h: Bump AOT file format version.
3253
3254         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3255         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3256
3257         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3258         was used as an assembly filter.
3259
3260 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3261
3262         * unwind.c: Fix support for ppc.
3263
3264         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3265         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3266
3267 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3268
3269         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3270         port.
3271         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3272         added by the ps3 changes.
3273
3274 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3275
3276         * mini-gc.c: Resurrect this, so at least it compiles.
3277
3278         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3279
3280 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3281
3282         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3283         create_event_list () so assembly filters can be used.
3284
3285         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3286         from the LMF.
3287
3288 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3289
3290         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3291         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3292         is disabled.
3293
3294         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3295         classes for char/bool too.
3296
3297         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3298
3299         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3300         used.
3301
3302         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3303         Fix warnings.
3304
3305 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3306
3307         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3308         
3309         Code contributed under MIT/X11 license.
3310
3311 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3312
3313         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3314         threads in native code work.
3315
3316         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3317         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3318         version.
3319
3320 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3321
3322         * debugger-agent.c: Implementation for Windows platform.
3323
3324         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3325         primitives. Use SEH to implement breakpoints and single stepping.
3326
3327         * mini-x86.h: Enable soft debugger on Windows.
3328
3329         Code contributed under MIT/X11 license.
3330
3331 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3332
3333         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3334         under XEN. Fixes #522894.
3335
3336         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3337
3338         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3339         interface calls in LLVM AOT code.
3340
3341         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3342         is found.
3343
3344         * mini-llvm.c: Add support for OP_VPHI.
3345
3346         * objects.cs: Add a test.
3347
3348 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3349
3350         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3351         this is called on the debugger thread.
3352
3353 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3354
3355         * mini-llvm.c: Add soft-float support.
3356
3357         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3358         FCALL which returns an R4.
3359
3360         * driver.c (mono_main): Add a missing '\n'.
3361
3362         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3363         platforms which doesn't support the LLVM IMT trampoline.
3364
3365 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3366
3367         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3368
3369         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3370
3371         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3372         virtual calls.
3373
3374         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3375
3376 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3377
3378         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3379         Instead of emitting a method_order table, sort the contents of the code_offsets
3380         table and do a binary search in the sorted table. The previous approach doesn't
3381         work with LLVM which emits methods in a arbitrary order.
3382
3383         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3384         in the .eh_frame section in ELF files.
3385
3386         * mini.h: Bump corlib file format version.
3387
3388         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3389
3390         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3391         LDMIA->LDM macro name change.
3392
3393 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3394
3395         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3396         x86.
3397
3398         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3399         SVN.
3400
3401         * aot-compiler.c: Ditto.
3402
3403         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3404         &align to mini_type_stack_size_full ().
3405
3406         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3407
3408         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3409
3410 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3411
3412         * mini-arm.c: Compute the stack space used by arguments using
3413         mini_type_stack_size_full ().
3414
3415 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3416
3417         * optflags-def.h: Remove dead TREEPROP optimization.
3418
3419 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3420
3421         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3422
3423         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3424
3425 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3426
3427         * driver.c (mono_jit_parse_options): New public API function to parse options
3428         as done by the runtime executable.
3429
3430         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3431         when handling named arguments.
3432
3433 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3434
3435         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3436         for passing small vtypes in registers, make the CallInfo structures more
3437         similar to the code on the other platforms.
3438
3439         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3440         the code in the prolog requires it.
3441
3442 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3443
3444         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3445         (koush@koushikdutta.com).
3446
3447         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3448         where the thunk memory should be allocated from. Fixes appdomain unloading
3449         on arm.
3450
3451 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3452
3453         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3454         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3455
3456 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3457
3458         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3459         AOT, as it is not implemented yet.
3460
3461         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3462
3463 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3464
3465         * debugger-agent.c: Fix windows build.
3466
3467 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3468
3469         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3470         after the client connects/disconnects.
3471
3472         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3473         when an exception of a given type is thrown.
3474
3475         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3476         only on an uncaught exception.
3477
3478         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3479
3480         * debugger-agent.c: Add a 'launch' option.
3481
3482 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3483
3484         * debugger-agent.c: Add a 'timeout' option.
3485
3486 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3487
3488         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3489         the JDWP agent.
3490
3491 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3492
3493         * debugger-agent.c (set_breakpoint): Emit a log message.
3494
3495 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3496
3497         * mini-arm.c: Fix the arm build.
3498
3499 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3500
3501         * aot-compiler.c: don't leak the value returned from
3502         mono_type_full_name().
3503
3504 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3505
3506         * debugger-agent.c: defer including mono-mutex.h until we know the
3507         agent is supported.
3508
3509 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3510
3511         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3512         of pthreads directly.
3513
3514         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3515         exception handlers. Pass info argument.
3516
3517         * mini.h: Adjust signatures of soft debugger functions to pass void*
3518         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3519
3520         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3521         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3522         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3523         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3524
3525         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3526
3527         * mini-x86.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-x86.h: Adjust MonoW32ExceptionHandler signature.
3533
3534         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3535
3536         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3537
3538         * mono-semaphore.h: Skeleton implementation for Windows.
3539
3540         Code contributed under MIT/X11 license.
3541
3542 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3543
3544         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3545
3546         Code contributed under MIT/X11 license.
3547
3548 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3549
3550         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3551
3552         Code contributed under MIT/X11 license.
3553
3554 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3555
3556         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3557         debug info to 100 because 10 still slows down gdb too much.
3558
3559         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3560         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3561         them in the wrappers.
3562
3563 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3564
3565         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3566
3567         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3568
3569         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3570         function mono_aot_get_array_helper_from_wrapper ().
3571
3572         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3573         array helper methods.
3574
3575 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3576
3577         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3578         the value was loaded from memory.
3579
3580         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3581         the value was loader from there.
3582
3583         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3584         without constant swizzle.
3585
3586 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3587
3588         * mini-amd64.c: Put soft debugger functions behind a
3589         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3590
3591         * mini-amd64.h: disable the soft debugger in windows.
3592
3593         Code contributed under MIT/X11 license.
3594
3595 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3596
3597         * mini-x86.c: Put soft debugger functions behind a
3598         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3599
3600         Code contributed under MIT/X11 license.
3601
3602 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3603
3604         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3605         to mono_arch_find_jit_info_ext.
3606
3607         Code contributed under MIT/X11 license.
3608
3609 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3610
3611         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3612
3613         * debugger-agent.c: Add support for filtering events by assemblies.
3614
3615         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3616         the agent is not enabled.
3617
3618 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3619
3620         * exceptions-x86.c: hopefully last change to fix the windows build.
3621         This one courtesy of Jonathan Chambers.
3622
3623 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3624
3625         * debugger-agent.c: remove unused function.
3626
3627 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3628
3629         * debugger-agent.c: add #ifdefs for a few header files.
3630         * mini-x86.h: disable the soft debugger in windows.
3631         Step 1 of 2 to make this compile on windows with gcc.
3632
3633 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3634
3635         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3636         as it breaks the build.
3637
3638 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3639
3640         Merge the soft debugger branch.
3641
3642         * debugger-agent.h debugger-agent.c: New files containing the soft
3643         mode debugger module.
3644
3645         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3646         at the appropriate locations.
3647
3648         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3649         opcode.
3650
3651         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3652         enable/disable single stepping.
3653
3654         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3655         which returns all information in a StackFrameInfo structure, and can handle the
3656         LMF frames added by the debugger.
3657
3658         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3659         about an LMF frame.
3660
3661         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3662         walker function which works on a specific thread and passes a StackFrameInfo
3663         structure to its callback.
3664
3665         * mini.c (mini_init): Initialize the debugger agent.
3666
3667         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3668
3669         * mini-ops.h: Add OP_SEQ_POINT opcode.
3670
3671         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3672         arguments to the debugger agent.
3673
3674 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3675
3676         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3677         speed things up.
3678
3679         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3680
3681         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3682
3683         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3684
3685         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3686         if needed.
3687         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3688         sets the IMT argument and makes a virtual call.
3689
3690         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3691
3692 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3693
3694         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3695         the windows build.
3696
3697 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3698
3699         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3700         runtime. Fixes #551228.
3701
3702 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3703
3704         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3705
3706         * basic.cs: Add a test.
3707
3708         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3709         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3710         CONSTRAINED. Fixes #550964.
3711
3712         * generics.cs: Add a test.
3713
3714 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3715
3716         * mini-posix.c (add_signal_handler): Use
3717         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3718
3719 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3720
3721         Contributed under the terms of the MIT/X11 license by
3722         Jerry Maine <crashfourit@gail.com>.
3723
3724         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3725         sse4a for simd intrinsics.
3726
3727         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3728         sse4a for simd intrinsics.
3729
3730 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3731
3732         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3733         instead of inst_p1 which is not the same on ILP32 platforms.
3734
3735 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3736
3737         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3738         not the mscorlib one before calling mono_get_lmf_addr.
3739
3740         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3741         of the ip to the LMF.
3742
3743         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3744         immediate in the op->op_imm optimization.
3745
3746         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3747         understand. VTypes now work, but are not abi compliant, as they are
3748         split into 4 byte parts instead of 8.
3749         (emit_memcpy): Fix the unrolled case to work on the PS3.
3750
3751         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3752
3753         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3754         the default when static linking.
3755
3756         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3757
3758         * aot-compiler.c: Add an autoreg option to automatically register
3759         statically linked aot modules using ELF .ctors.
3760
3761         * genmdesc.pl: Add __ppc64__ to allowed defines.
3762
3763 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3764
3765         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3766         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3767
3768 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3769
3770         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3771
3772 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3773
3774         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3775         which will contain the domain where the method was found.
3776
3777         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3778         mini_jit_info_table_find ().
3779
3780         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3781
3782         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3783
3784 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3785
3786         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3787         set, its not supported yet.
3788
3789 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3790
3791         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3792         iface wrapper is not found.
3793         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3794
3795 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3796
3797         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3798         which have a different name.
3799
3800         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3801         wrappers and Array.GetGenericValueImpl ().
3802
3803         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3804         because of the change above.
3805
3806         * generics.cs: Add a test for full aot + generic array ifaces.
3807
3808 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3809
3810         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3811         that hides the previous one.
3812
3813 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3814
3815         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3816         marshalled. Fixes #541623.
3817
3818 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3819
3820         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3821
3822 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3823
3824         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3825
3826 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3827
3828         * mini-posix.c (sigprof_signal_handler):
3829         Implemented support for building stat call chans in different ways.
3830
3831 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3832
3833         * mini-exceptions.c (mono_find_jit_info):
3834         Also check that a jit info has been found (fixes a profiler crash).
3835
3836 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3837
3838         * mini.c (mono_codegen):
3839         Call mono_profiler_code_buffer_new with correct code address.
3840
3841 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3842
3843         * driver.c (mono_main): Change the date in the copyright.
3844
3845 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3846
3847         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3848         allocator in shared generic code for open classes, because we
3849         can't get those classes' vtables.  We need to make managed
3850         allocators not depend on the vtable at compile-time to solve this.
3851
3852 2009-10-13  Martin Baulig  <martin@ximian.com>
3853
3854         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3855         `const guint8 *trampoline' argument; send both the old and the new
3856         notification.
3857
3858 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3859
3860         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3861         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3862         (can_marshal_struct): Skip structures with auto layout.
3863
3864         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3865
3866 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3867
3868         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3869         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3870         a variable to hold the stack slot used by the int<->float conversion opcodes.
3871
3872         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3873
3874 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3875
3876         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3877         when using full-aot.
3878
3879 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3880
3881         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3882         each instance of Comparer<T>.
3883
3884         * generics.cs: Add a new test.
3885
3886 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3887
3888         * driver.c (parse_debug_options): Add a 'gdb' option.
3889
3890         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3891
3892         * image-writer.c: Add support for emitting the image into a memory buffer.
3893
3894         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3895
3896         * aot-compiler.c: Add support for registering debug info with GDB using the
3897         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3898         MONO_XDEBUG to 'gdb'.
3899
3900 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3901
3902         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3903         gdb mode.
3904
3905 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3906
3907         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3908         can be used to set breakpoints in gdb.
3909
3910         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3911         segment to an absolute address.
3912
3913 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3914
3915         * method-to-ir.c: Use the managed array allocator method if
3916         available.
3917
3918 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3919
3920         * aot-compiler.c : Fix the MSVC builds
3921
3922         Code is contributed under MIT/X11 license.
3923
3924 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3925
3926         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3927         avoid registering 1 symbol file per method with gdb.
3928
3929 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3930
3931         * mini-sparc.c: Fix the handling of enums with base type long.
3932
3933         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3934
3935         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3936         instead of using type->data.klass as the later doesn't work with generics.
3937
3938 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3939
3940         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3941         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3942         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3943         works differently now and we don't handle it in the JIT anymore.
3944
3945         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3946         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3947         the Thread class split.
3948
3949 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3950
3951         * driver.c: Don't run tests with the obsolete treeprop optimization.
3952
3953         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3954         variable volatile. Fixes #541577.
3955
3956         * basic-calls.cs: Add a new test.
3957
3958         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3959
3960 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3961
3962         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3963         work/required with recent iphone sdk versions.
3964
3965         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3966         structures.
3967
3968         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3969         in the VCALL decomposition code.
3970
3971 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3972
3973         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3974
3975         * basic.cs: Add a test.
3976
3977         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3978         generic invokes.
3979
3980         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3981         searches all the domains of the current thread.
3982
3983         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3984
3985 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3986
3987         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3988         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3989
3990         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3991         for non-jit trampolines.
3992
3993         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3994
3995         * aot-compiler.c (add_wrappers): Ditto.
3996
3997         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3998         the size of the param area used by dyn_call to 6 which covers the majority of
3999         methods.
4000
4001         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
4002
4003         * mini-arm.c: Implement support for passing/receiving
4004         longs and receiving floats in the dyn_call code.
4005
4006         * mini-amd64.c: Implement support for receiving vtypes in registers in
4007         the dyn_call code.
4008
4009         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
4010         the dyn_call code.
4011
4012 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
4013
4014         * mini-arm.c (get_call_info): Return more precise information in
4015         ArgInfo->regtype.
4016         (dyn_call_supported): Use the information in CallInfo.
4017
4018         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
4019
4020         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
4021         code.
4022
4023         * mini-arm.c: Update after the dyn_call api changes.
4024
4025         * mini.c (mini_create_jit_domain_info): Register a destructor function
4026         for the runtime_invoke_hash.
4027
4028         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
4029         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
4030         this function.
4031         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
4032         (dyn_call_supported): Simplify this by using get_call_info ().
4033         (mono_arch_dyn_call_free): New destructor function.
4034
4035         * generics.cs: Remove a printf.
4036
4037         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
4038
4039         * mini-arm.c: Add support for enum return values and passing a few arguments
4040         on the stack.
4041         
4042         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
4043         dyn invoke.
4044
4045         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
4046
4047         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
4048         the dynamic invoke wrappers.
4049
4050         * mini-arm.c: Implement OP_DYN_CALL for arm.
4051
4052         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
4053         supported by the dynamic runtime invoke wrapper.
4054
4055         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
4056         runtime invoke wrapper.
4057
4058         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
4059         if possible when running with full-aot.
4060
4061         * mini-ops.h: Add OP_DYN_CALL opcode.
4062
4063         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
4064         with dynamic arguments lists similar to libffi.
4065
4066 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
4067
4068         * method-to-ir.c: Fix the previous change on 64 bit platforms.
4069         
4070         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
4071         to NEWARR.
4072
4073         * iltests.il.in: Add a new test.
4074         
4075 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
4076
4077         * aot-compiler.c (add_generic_instances): Add more instances of
4078         GenericEqualityComparer.
4079
4080 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4081
4082         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
4083
4084 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4085
4086         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
4087         comments on some functions that now can fail.
4088
4089 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
4090
4091         * Makefile.am: Add Info.plist to EXTRA_DIST
4092
4093 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4094
4095         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
4096         static synchronized wrappers. Fixes #539500.
4097
4098 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
4099
4100         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
4101         properly.
4102
4103 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4104
4105         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
4106         lmf before calling filter clauses as well. Fixes #539550.
4107
4108         * exceptions.cs: Add a test.
4109         
4110 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
4111
4112         * aot-compiler.c (add_generic_class): Add instances of
4113         Array.GetGenericValueImpl as well.
4114
4115         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
4116         can be tested too.
4117
4118         * generics.cs: Add a fullaot linq test.
4119
4120 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
4121
4122         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
4123         reg r1 on arm.
4124
4125 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4126
4127         * mini-trampolines.c (mono_delegate_trampoline) : Call
4128           mono_cominterop_get_invoke if the delegate target object
4129           is a COM object.
4130
4131         Code is contributed under MIT/X11 license.
4132
4133 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
4134
4135         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
4136         internal call is defined outside platform code. Reduce code 
4137         duplication with existing [Method|Field]AccessException
4138
4139 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4140
4141         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
4142         if the return value is a small struct passed on regs.
4143
4144 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
4145
4146         * cpu-arm.md mini-arm.c: Remove unused opcodes.
4147
4148         * mini-codegen.c: Enable the cpu description validation for arm.
4149
4150 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
4151
4152         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
4153         test which depends on structs to objects.cs.
4154         
4155         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
4156         require object model related stuff working.
4157
4158         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
4159
4160         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
4161
4162         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
4163         against the instruction metadata in mini-ops.h. amd64 only for now.
4164
4165         * mini-ops.h: Fix some instruction descriptions.
4166
4167         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
4168         unused instructions.
4169
4170 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4171
4172         * exceptions.cs: Add a new test.
4173
4174 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4175
4176         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
4177
4178 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4179
4180         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
4181         skip empty phi opcodes.
4182         
4183         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
4184         correctly by zero extending after loads. Skip methods containing calls
4185         to the monitor enter/exit trampolines.
4186
4187         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
4188         when calling mono_thread_force_interruption_checkpoint ().
4189
4190         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
4191
4192         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
4193         64 bit thunks.
4194         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
4195
4196         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
4197         bootstrap could run.
4198
4199 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4200
4201         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
4202
4203 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4204
4205         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
4206         of the method to
4207         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4208         LLVM might be very short.
4209
4210         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
4211         in OP_THROW/RETHROW.
4212
4213         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4214         alignment on osx.
4215
4216 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4217
4218         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4219         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4220         LLVM might be very short.
4221
4222 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4223
4224         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4225         the alignment for the value of sp.
4226
4227 2009-09-01  Geoff Norton  <gnorton@novell.com>
4228
4229         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4230         managed wrappers in full aot.
4231
4232 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4233
4234         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4235
4236 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4237
4238         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4239
4240 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4241
4242         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4243
4244         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4245         saved info.
4246
4247         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4248
4249         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4250         depend on the info MonoMethodHeader which could be missing in IL stripped
4251         assemblies.
4252
4253 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4254
4255         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4256         they are only 4 byte aligned.
4257
4258 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4259
4260         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4261         was done previously, since using SP causes too many problems.
4262
4263         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4264         frames without a frame pointer works.
4265
4266         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4267         global register in methods with calls, since the calls can go through
4268         a static rgctx trampoline which doesn't save it.
4269
4270 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4271
4272         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4273
4274 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4275
4276         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4277
4278 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4279
4280         * method-to-ir.c: Fix warnings for uninitialized variables.
4281
4282 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4283
4284         * mini-exceptions.c:
4285         * aot-compiler.c: Fix printf warnings.
4286
4287 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4288
4289         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4290         Add GetGenericValueImpl<string>.
4291         
4292         * aot-compiler.c (add_generic_instances): Add instances of
4293         GenericEqualityComparer<T> for primitive types. Only emit the array
4294         wrappers into the mscorlib image.
4295
4296 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4297
4298         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4299         the methods_loaded array using amodule->info->nmethods.
4300
4301         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4302         (MONO_AOT_FILE_VERSION): Bump this.
4303
4304         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4305         to work.
4306
4307         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4308         MonoJitInfo doesn't belong to its methods aot image.
4309
4310 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4311
4312         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4313
4314         * mini-arm.c: Fix warnings.
4315         
4316         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4317
4318         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4319         supports it.
4320
4321 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4322
4323         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4324         avoid clobbering IP.
4325
4326         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4327         hold the trampoline argument, so its initial value is available during
4328         debugging.
4329
4330 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4331
4332         * exceptions-arm.c:
4333         * exceptions-hppa.c:
4334         * mini.c:
4335         * exceptions-s390x.c:
4336         * exceptions-mips.c:
4337         * exceptions-ppc.c:
4338         * exceptions-sparc.c:
4339         * exceptions-alpha.c:
4340         * aot-runtime.c:
4341         * mini-trampolines.c:
4342         * exceptions-x86.c:
4343         * exceptions-s390.c: add and use #define's instead of sizeof()
4344         for MonoJitInfo and MonoJitInfoTable.
4345
4346 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4347
4348         * tramp-arm.c:
4349         * tramp-amd64.c:
4350         * tramp-ppc.c:
4351         * tramp-x86.c: use a #define instead of sizeof() for a few
4352         structures that use a zero-length array.
4353
4354 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4355
4356         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4357         case when the method is dynamic. Fixes #529238.
4358
4359 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4360
4361         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4362         of asserting when a method is JIT compiled in full-aot mode.
4363
4364 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4365         
4366         Contributed under the terms of the MIT/X11 license by
4367         Jerry Maine <crashfourit@gail.com>.
4368         
4369         * fixed wrong dates in changelog.
4370
4371 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4372         
4373         Contributed under the terms of the MIT/X11 license by
4374         Jerry Maine <crashfourit@gail.com>.
4375
4376         * basic-simd.cs: added test for packed double square root.
4377         * cpu-amd64.md: added opcode info for packed double square root.
4378         * cpu-x86.md: added opcode info for packed double square root.
4379         * mini-ops.h: added IR opcode for packed double square root.
4380         * mini-x86.c: added IR to native translation code for packed double square root.
4381         * mini-amd64.c: removed todo for packed double square root.
4382         * simd-intrinsics.c: added method to IR opcode converstion for
4383         packed double square root.
4384
4385 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4386
4387         Contributed under the terms of the MIT/X11 license by
4388         Jerry Maine <crashfourit@gail.com>.
4389
4390         * mini-amd64.c: Added a change to help tell the difference as 
4391         to what perpose the xmm register is being used--mainly to help
4392         with debuging.
4393         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4394         (one used for special cases) xmm registers for both fp
4395         and simd ops. Added define to turn on new feature in the regalloc
4396         that allows fp and simd ops to share the xmm regs happily.
4397         * codegen.c: Added code to detect for which perpose an xmm reg is
4398         being used (fp or simd) and to translate back and forth to the
4399         correct logical reg bank (fp or simd) for 'spill load's.
4400
4401 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4402
4403         Contributed under the terms of the MIT/X11 license by
4404         Jerry Maine <crashfourit@gail.com>.
4405
4406         * basic-simd.cs: Added tests for stressing the regalloc when running with
4407         16 simd regs and when simd and fp ops share the same reg bank.
4408
4409 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4410
4411         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4412         in shared generic code, we might have to look up the class in the
4413         RGCTX.  If we use the class directly, compute its GC descriptor.
4414
4415 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4416
4417         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4418
4419 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4420
4421         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4422         check for errors. Fixed the case when the class with the Main
4423         method is broken.
4424
4425 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4426
4427         Contributed under the terms of the MIT/X11 license by
4428         Jerry Maine <crashfourit@gail.com>.
4429
4430         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4431
4432 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4433
4434         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4435
4436 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4437
4438         * method-to-ir.c: Fix naming of stelem and ldelem.
4439
4440 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4441
4442         * driver.c (main_thread_handler): Check that the assembly loaded
4443         matches the filename when doing AOT.
4444
4445 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4446
4447         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4448         call it anymore.
4449
4450         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4451         utils/mono-sigcontext.h).
4452
4453         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4454         #ifdef.
4455
4456 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4457
4458         * mini.c (mono_codegen):
4459         Call profiler hook to keep track of method code buffers.
4460
4461 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4462
4463         * method-to-ir.c: Invoke write barriers for the
4464         Interlocked.(Compare)Exchange JIT intrinsics.
4465
4466 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4467
4468         * Makefile.am (version.h): Fix issues when built out of tree.
4469         Remove some redundant 'grep's piped through 'sed's.
4470
4471 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4472
4473         This patch is contributed under the terms of the MIT/X11 license
4474
4475         * mini-ppc.c (mono_arch_output_basic_block):
4476         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4477         for bits 32-47 with signed load/store diplacements for bits
4478         48-63.  Use prefered base/offset order for indexed form.
4479         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4480         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4481         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4482         OP_LOADI2_MEMBASE): Same.
4483         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4484         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4485         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4486         indexed form.
4487         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4488         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4489         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4490         OP_LOADI1_MEMINDEX): Same
4491         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4492         OP_STORER8_MEMINDEX): Same
4493         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4494         computations.
4495         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4496         for bits 32-47 with signed load/store diplacements for bits
4497         48-63.  Use prefered base/offset order for indexed form.
4498
4499 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4500
4501 This patch is contributed under the terms of the MIT/X11 license
4502
4503         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4504         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4505         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4506         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4507         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4508         cfg->stack_usage to avoid size warnings.
4509         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4510         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4511         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4512         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4513         to convert.
4514         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4515         after code varible is initialized.
4516         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4517         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4518         (mono_arch_emit_epilog): 
4519         Move Use ppc_load32 for cfg->stack_usage to avoid size
4520         warnings.
4521
4522 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4523
4524         * method-to-ir.c: The write barrier doesn't do the store anymore,
4525         so we have always to emit it.  Also, emit the wbarrier after the
4526         store.
4527
4528 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4529
4530         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4531         for argument count 3 too.
4532
4533 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4534
4535         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4536         the caller handle the exceptions.
4537         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4538         method. Fixes #524498.
4539
4540 2009-07-22  Geoff Norton  <gnorton@novell.com>
4541
4542         * mini-exceptions.c: Fix build on ia64.
4543
4544 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4545
4546         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4547         barriers.
4548
4549 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4550
4551         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4552         code.
4553
4554 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4555
4556         * basic-simd.cs (Main): Pass args to the test driver.
4557
4558 2009-07-20  Geoff Norton  <gnorton@novell.com>
4559
4560         * mini-x86.h: Fix the x86 version guards to use Apple's
4561         properly defined macros.
4562
4563 2009-07-20  Geoff Norton  <gnorton@novell.com>
4564
4565         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4566         aligned access.
4567
4568 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4569
4570         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4571         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4572         the information which is needed for invokes, so only one locking+hash table
4573         lookup is needed.
4574
4575         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4576         
4577         * aot-compiler.c (add_generic_instances): Emit instances of 
4578         GenericComparer<T> for primitive types.
4579
4580 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4581
4582         * mini-posix.c: Fix linux build.
4583
4584 2009-07-19  Geoff Norton  <gnorton@novell.com>
4585
4586         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4587         mono_gdb_render_native_backtraces
4588         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4589         so we implement the sane semantics to the runtime here
4590         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4591         so we need to call it differently (mono_gdb_render_native_backtraces)
4592         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4593         here for default implementations.
4594         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4595         support Apple's weird syscall (SYS_fork) implementation and not busy
4596         loop in abort() on native crashes on OSX anymore.
4597
4598 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4599
4600         * aot-runtime.c (load_method): Change the handling of the
4601         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4602         are used.
4603
4604         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4605
4606 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4607
4608         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4609         seems to break the aot tests.
4610         
4611         * mini.c (mono_patch_info_equal): Fix the handling of 
4612         MONO_PATCH_INFO_RGCTX_FETCH.
4613
4614 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4615
4616         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4617
4618         * mini.c (mono_patch_info_hash): Fix the handling of 
4619         MONO_PATCH_INFO_INTERNAL_METHOD.
4620         (mono_patch_info_equal): Ditto.
4621
4622 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4623
4624         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4625         in a few places.
4626         
4627         * mini-llvm.c: Add some infrastructure for AOT support.
4628
4629 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4630
4631         * mini-llvm-cpp.c: Update to the latest llvm api.
4632         
4633         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4634         option to false to prevent llvm from installing signal handlers which
4635         trip up the gc.
4636         
4637 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4638
4639         * cpu-x86.md:
4640         * cpu-amd64.md: Revert previous change as those instructions
4641         take 2 separate arguments. Remember to read the arch docs more
4642         carefully next time.
4643
4644 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4645
4646         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4647
4648 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4649
4650         * mini-ppc.c: exploit multiple load/store units if available (rest of
4651         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4652         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4653
4654 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4655
4656         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4657         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4658
4659 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4660
4661         * cpu-x86.md: Fix missing clobbering from trancendental simd
4662         ops.
4663
4664         * cpu-amd64.md: Same.
4665
4666 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4667
4668         Contributed under the terms of the MIT/X11 license by
4669         Jerry Maine <crashfourit@gail.com>.
4670
4671         * basic-simd.cs: Added tests for single and doulble indexers.
4672
4673         * cpu-amd64.md: Added simd opcode information.
4674
4675         * mini-amd64.c: Added IR to native simd generation code.
4676         Added simd register names and function that returns them.
4677
4678         * mini-amd64.h: Added marcos to turn on simd code compilation in
4679         amd64. Added max simd register count marco. Added caller/callee
4680         register mask marcos. Added marcos to use simd register bank.
4681
4682         * mini.h: Added helper marco for shufling dwords and simple
4683         floats.
4684
4685 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4686
4687         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4688
4689         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4690
4691         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4692         the length of the native code as well.
4693
4694         * basic-simd.cs: Add a test for #521662.
4695
4696 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4697
4698         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4699
4700 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4701
4702         * mini.c: Register function for getting the IP from a signal
4703         context with metadata.
4704
4705 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4706
4707         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4708         call a generic class init trampoline if needed. Fixes #519336.
4709
4710         * generics.cs: Add a test.
4711         
4712 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4713
4714         * method-to-ir.c: When doing a call which might be remote from
4715         shared generic code to other shared code with open type arguments,
4716         get the remoting invoke wrapper from the RGCTX and do an indirect
4717         call to it.
4718
4719 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4720
4721         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4722         after the unbox trampoline in the full-aot case.
4723
4724 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4725         
4726         * mini.c: Move initialization of jit_mutex before debugger initialization
4727         
4728         to avoid crashes.
4729         
4730         
4731         * Info.plist: added Info.plist and link flag to enable the mono executable
4732         to access other processes. Requires codesigning of the executable to work.
4733         
4734         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4735         
4736         compile on OS X.
4737         
4738
4739 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4740
4741         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4742
4743 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4744
4745         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4746         when the generic instance is an instantiation of a subclass of the
4747         methods class. Fixes #517166.
4748
4749 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4750
4751         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4752         code.
4753
4754         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4755         AOTed code.
4756
4757         * CMakeLists.txt: Add minimal support for installation.
4758
4759 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4760
4761         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4762         determine whenever a method is directly callable to a separate function.
4763
4764         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4765         needed ones as a result of the previous change.
4766
4767         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4768         type of register arrays.
4769
4770         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4771         type of register arrays.
4772
4773 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4774         
4775         Contributed under the terms of the MIT/X11 license by
4776         Jerry Maine <crashfourit@gail.com>.
4777
4778         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4779
4780 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4781
4782         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4783
4784 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4785
4786         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4787         dump of structure return value. Fix some formatting.
4788         * cpu-s390x.md: Fix lengths of instruction sequences.
4789         * mini-s390.c: Minor formatting changes.
4790
4791 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4792
4793         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4794         Use sigaction on freebsd as well.
4795
4796 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4797
4798         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4799         uses #ifdef on it.
4800         
4801         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4802
4803 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4804
4805         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4806
4807 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4808
4809         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4810
4811 2009-06-20  Martin Baulig  <martin@ximian.com>
4812
4813         * debug-mini.c
4814         (MonoDebuggerThreadFlags): New enum typedef.
4815         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4816         (mono_debugger_thread_created): Added `gpointer func' argument;
4817         initialize the new `thread_flags' field.
4818
4819 2009-06-18  Martin Baulig  <martin@ximian.com>
4820
4821         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4822         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4823
4824         * debug-debugger.c
4825         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4826         flag in `MONO_DEBUGGER__info.runtime_info'.
4827
4828         * driver.c
4829         (mono_main): Call mini_debugger_set_attach_ok() if generics
4830         sharing is disabled.
4831
4832 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4833
4834         * aot-compiler.c (add_wrappers): Fix a warning.
4835
4836         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4837         the ppc load/store macro changes.
4838
4839 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4840
4841         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4842
4843         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4844         not just the got symbol.
4845
4846         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4847         on ppc.
4848
4849         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4850         ppc.
4851         
4852         * aot-compiler.c: Remove some fixmes.
4853
4854         * driver.c (mono_main): Print a helpful message when cross-compiling.
4855
4856         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4857
4858         * method-to-ir.c (initialize_array_data): Do the optimization if the
4859         target byte order is little endian, instead of the host byte order.
4860
4861         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4862         wrappers into the mscorlib image, Emit a unique plt symbol for each
4863         image, emit symbols for plt entries.
4864
4865         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4866         a .size directive.
4867         
4868 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4869
4870         * aot-compiler.c (add_wrappers): Avoid calling 
4871         mono_marshal_get_type_info () since it can assert for some types.
4872
4873         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4874         ldtoken are used inside wrappers.
4875
4876         * helpers.c: Add support for prefixing tools with the arch name.
4877
4878         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4879         quantities when using ilp32.
4880
4881         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4882         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4883
4884         * image-writer.c: Use .long on ilp32.
4885
4886         * aot-compiler.c: Use 32 bit loads on ilp32.
4887         
4888 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4889
4890         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4891
4892         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4893
4894         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4895
4896         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4897         second got slot of every aot image.
4898         
4899         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4900         aot on platforms with function pointers.
4901
4902         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4903         support for aot/full aot on ppc/ppc64.
4904         
4905         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4906         arguments which are needed on ppc.
4907
4908         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4909         argument.
4910
4911         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4912         
4913         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4914
4915         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4916
4917         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4918
4919         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4920
4921 2009-06-17  Geoff Norton  <gnorton@novell.com>
4922
4923         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4924
4925 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4926
4927         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4928         to control whenever the dwarf writer is in xdebug or aot mode.
4929         (emit_class_dwarf_info): Use a separate abbrev for structures without
4930         children.
4931
4932         * aot-compiler.c: Pass the appending parameter to 
4933         mono_dwarf_writer_create ().
4934
4935         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4936         falls through to its next bblock. Fixes #513931.
4937
4938         * iltests.il: Add a test.
4939
4940         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4941         infor even if emit_line is FALSE, as the apple linker seems to require it.
4942
4943         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4944
4945         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4946         gcc does.
4947         (emit_fde): Ditto.
4948
4949 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4950
4951         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4952         mips build.
4953
4954 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4955
4956         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4957         'has_call_handler' fields.
4958
4959         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4960
4961         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4962         first bblock if not needed. Fixes #512790.
4963         
4964 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4965
4966         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4967         
4968         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4969         wrappers.
4970
4971         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4972         remoting-invoke-with-check wrappers, which are not needed when running with
4973         full-aot, since it doesn't support remoting.
4974         
4975 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4976
4977         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4978
4979         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4980         method info, it is not used anymore.
4981
4982         * mini.h: Bump AOT file format version.
4983         
4984         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4985         word smaller.
4986
4987         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4988         change above.
4989         
4990         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4991
4992         * mini.h: Bump AOT file format version.
4993         
4994 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4995
4996         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4997         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4998         iphone.
4999
5000         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
5001         of CKFINITE and FBGE for VFP.
5002
5003 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
5004
5005         * aot-compiler.c: Don't align code to 16 bytes on arm.
5006         
5007         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
5008         before the methods they belong to.
5009
5010         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
5011         the full-aot case if possible, since the trampoline will be called right 
5012         away.
5013
5014         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
5015         trampolines to 1024 after the change above.
5016
5017         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
5018         trampoline to save 8 bytes per trampoline.
5019
5020         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
5021         change above.
5022
5023 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
5024
5025         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
5026
5027 2009-06-08  Martin Baulig  <martin@ximian.com>
5028
5029         * debug-mini.c
5030         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
5031         (_mono_debugger_throw_exception): Don't make this static.
5032         (_mono_debugger_unhandled_exception): Likewise.
5033         (mono_debugger_handle_exception): Moved to mini-exceptions.c
5034
5035         * debug-mini.c
5036         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
5037         (_mono_debugger_throw_exception): Add function prototype.
5038         (_mono_debugger_unhandled_exception): Likewise.
5039
5040         * mini-exceptions.c
5041         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
5042         arg; return the first exception handler if the exception is caught
5043         and we're running inside the debugger.
5044         (mono_debugger_handle_exception): Moved here from debug-mini.c;
5045         improve exception handle inside runtime-invoke, check whether the
5046         exception is actually caught in the method being invoked and not
5047         by the runtime-invoke-wrapper.
5048
5049 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
5050
5051         * image-writer.c: Improve support for the osx assembler.
5052
5053         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
5054         support them.
5055
5056 2009-06-08  Martin Baulig  <martin@ximian.com>
5057
5058         * debug-mini.c
5059         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
5060         (_mono_debugger_throw_exception): Don't make this static.
5061         (_mono_debugger_unhandled_exception): Likewise.
5062         (mono_debugger_handle_exception): Moved to mini-exceptions.c
5063
5064         * debug-mini.c
5065         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
5066         (_mono_debugger_throw_exception): Add function prototype.
5067         (_mono_debugger_unhandled_exception): Likewise.
5068
5069         * mini-exceptions.c
5070         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
5071         arg; return the first exception handler if the exception is caught
5072         and we're running inside the debugger.
5073         (mono_debugger_handle_exception): Moved here from debug-mini.c;
5074         improve exception handle inside runtime-invoke, check whether the
5075         exception is actually caught in the method being invoked and not
5076         by the runtime-invoke-wrapper.
5077
5078 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
5079
5080         * image-writer.c (append_subsection): Don't align subsections of the
5081         debug_line section as a workaround.
5082
5083         * dwarfwriter.c: Emit line number info in the AOT case as well.
5084
5085 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
5086
5087         This patch is contributed under the terms of the MIT/X11 license
5088
5089        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
5090        code_len <= code_size
5091
5092 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
5093
5094         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
5095
5096 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5097
5098         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
5099         invoke wrappers, we now use trampolines instead.
5100
5101 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5102
5103         * mini-darwin.c: The exception thread must not be registered with
5104         the GC.
5105
5106 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5107
5108         * mini-gc.c: Disable the code because it makes SGen crash.
5109
5110 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
5111
5112         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
5113         instead of asserting.
5114
5115 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5116
5117         * aot-compiler.c (mono_compile_assembly): Move the creation of the
5118         output file after the code has been compiled.
5119
5120 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
5121
5122         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
5123
5124 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5125
5126         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
5127         entries distinction to simplify the code.
5128
5129         * mini.h: Bump AOT file format version.
5130         
5131 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
5132
5133         * objects.cs: Fix the signature of one of the tests.
5134
5135         * mini.c (mini_create_ftnptr): New helper function, moved here from
5136         object.c.
5137         (mini_get_addr_from_ftnptr): Ditto.
5138         (mini_init): Install the new helpers.
5139
5140 2009-05-28  Martin Baulig  <martin@ximian.com>
5141
5142         Correctly initialize the debugger when embedding Mono.
5143
5144         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
5145         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
5146         see documentation in mini_debug_running_inside_mdb().
5147
5148         * debug-debugger.c
5149         (mini_debug_running_inside_mdb): New function to check whether
5150         we're running inside mdb.
5151
5152         * mini.c (mini_init): Call mini_debugger_init() if we're running
5153         inside the debugger.
5154
5155         * driver.c (mono_main): Moved the call to mini_debugger_init()
5156         into mini_init() to make this work when embedding Mono.
5157
5158         * debug-debugger.c (mini_debugger_init): Warn about duplicate
5159         calls to mini_debugger_init().
5160
5161         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
5162         mono_debugger_main() -> mini_debugger_main() and put them inside a
5163         `MONO_DEBUGGER_SUPPORTED' conditional.
5164
5165 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
5166
5167         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
5168         this is no longer in use.
5169         * mini.h: Same.
5170
5171 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
5172
5173         * mini-sparc.c (add_outarg_load): Fix the sparc build.
5174
5175         * aot-compiler.c (emit_method_code): Always write out C style symbols for
5176         methods.
5177
5178 2009-05-27  Martin Baulig  <martin@ximian.com>
5179
5180 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5181
5182         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
5183         long_conv_to_r_un to 64 bits.
5184
5185         * cpu-x86.md: Increase the instruction size due to the changes.
5186
5187         * iltests.il.in: Add regression test.
5188
5189         Fixes #467201.
5190
5191 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5192
5193         * objects.cs: Move the previous test from basic.cs to here.
5194
5195 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5196
5197         * basic.cs: Add regression test for #506915.
5198
5199 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5200
5201         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
5202         optimization we must check the bb of the first byte of stobj as
5203         it's the only one set in cil_offset_to_bb.
5204
5205         Fixes #506915.  
5206
5207 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5208
5209         * image-writer.c: Fix pointer directive on ppc64.
5210
5211 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
5212
5213         * image-writer.c (asm_writer_emit_section_change): Avoid using
5214         .bss subsections on ppc too.
5215
5216 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5217
5218         * image-writer.c: Fix the definition of TARGET_ASM_....
5219         
5220         * image-writer.c: Fix the emission of assembler directives in the last
5221         change.
5222
5223         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5224         exception throwing code to accomodate ppc64.
5225
5226         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5227         size to work on ppc64 too.
5228
5229         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5230         too.
5231
5232         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5233         the assembler dialect instead of using platform specific defines.
5234
5235 2009-05-22  Geoff Norton  <gnorton@novell.com>
5236
5237         * mini-arm.c (get_call_info): If a structure is split between the stack
5238         and argument registers, we should not advance the stack pointer by the entire
5239         native size, but just by the amount that spilled.
5240
5241 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5242
5243         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5244         correctly.
5245
5246 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5247
5248         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5249         wrappers normally.
5250         
5251         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5252         methods so wrapper don't get added twice.
5253         (add_generic_instances): Don't add methods of arrays.
5254
5255         * generics.cs: Mark one test as !FULLAOT.
5256
5257 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5258
5259         * mini-x86.c (emit_move_return_value): Remove unused vars.
5260
5261 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5262
5263         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5264         decomposing 8 bytes structs into a LCALL.
5265
5266         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5267         pointer for where to store the returned regs.
5268
5269         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5270         state the concern.
5271
5272         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5273
5274 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5275
5276         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5277         without getenv.
5278
5279 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5280
5281         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5282
5283         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5284         generics.
5285
5286 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5287
5288         * local-propagation.c (mono_local_cprop): Avoid local propagation
5289         across paired add/sub if the first instruction dest reg is it's
5290         source reg. For example:
5291
5292         int_add_imm R12 <- R12 [1] clobbers: 1
5293         int_sub_imm R42 <- R12 [1] clobbers: 1
5294
5295         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5296         maintain the math identify.
5297
5298         Fixes #505375.
5299
5300 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5301
5302         * Makefile.am: avoid going on the network just to get the revision,
5303         use git log instead
5304
5305 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5306
5307         Fixed estimate for short branches on amd64 (they were off mark, and
5308         enabling call prolog-epilog instrumentations caused assertions).
5309         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5310         estimate for the maximum length of this basic block.
5311         * mini-amd64.c:
5312         - mono_arch_emit_prolog: compute max_length for each basic block
5313           (instead of max_offset), and inflate size estimate also for entry bb
5314           in case of code instrumentation.
5315         - mono_arch_output_basic_block: get rid of "cpos" (the current
5316           estimated "position" in the code), and always use "offset" instead,
5317           which is accurate; at the beginning of the function quickly recompute
5318           max_offset for all the remaining blocks, starting from the current
5319           cfg->code_len (which is correct, and not estimated) and using the
5320           estimated block lengths computed previously.
5321
5322 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5323
5324         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5325         functions, it is already done in the caller.
5326
5327         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5328
5329         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5330         MONO_ARCH_GSHARED_SUPPORTED define.
5331
5332         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5333
5334         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5335         function.
5336
5337 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5338
5339         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5340         call to mono_marshal_get_rgctx_invoke ().
5341
5342         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5343         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5344         gshared use the static rgctx trampolines now.
5345         
5346         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5347         platform supports it.
5348
5349 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5350
5351         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5352
5353         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5354
5355 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5356
5357         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5358
5359         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5360         for ppc.
5361
5362 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5363
5364         Made it possible for mono_arch_instrument_epilog to preserve
5365         argument registers, otherwise instrumenting the "epilogue" before
5366         a tail call would clobber them.
5367         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5368         if like mono_arch_instrument_epilog but with an additional parameter
5369         that states if argument registers must be preserved.
5370         * mini.c: implemented mono_arch_instrument_epilog as a call to
5371         mono_arch_instrument_epilog_full without asking to preserve argument
5372         registers (this makes the existing code work as usual).
5373         * mini-amd64.c:
5374         - mono_arch_instrument_epilog: add parameter to transform it into
5375         mono_arch_instrument_epilog_full, and preserve argument registers
5376         when required.
5377         - mono_arch_output_basic_block, OP_TAILCALL case: call
5378         mono_arch_instrument_epilog_full.
5379         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5380         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5381         only transformed mono_arch_instrument_epilog into
5382         mono_arch_instrument_epilog_full.
5383
5384 2009-05-15  Geoff Norton  <gnorton@novell.com>
5385
5386         * mini-darwin.c: This works on arm now.
5387
5388 2009-05-14  Geoff Norton  <gnorton@novell.com>
5389
5390         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5391         embedding api.
5392
5393 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5394
5395         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5396         label names.
5397
5398         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5399         wrappers during full aot mode correctly.
5400
5401         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5402         methods correctly.
5403
5404         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5405         mono_metadata_type_hash ().
5406
5407 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5408
5409         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5410         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5411         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5412         Removed MONO_INST_BRLABEL from the instruction flags, and the
5413         remaining code that used it, because we do not support branches inside
5414         basic blocks (and branch target labels) anymore.
5415         * Makefile.am: As part of the above cleanup, remove reference to
5416         BURG files which don't exist anymore.
5417
5418 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5419
5420         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5421         osx.
5422
5423         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5424         to use mono_arch_throw_corlib_exception.
5425
5426         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5427         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5428
5429         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5430         domain mempool.
5431
5432         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5433
5434         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5435         for the got to make debugging easier and to avoid confusing it with the
5436         system got.
5437         
5438         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5439         method so a breakpoint can be set when using gdb.
5440
5441 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5442
5443         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5444         on mono_method_get_imt_slot ().
5445
5446         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5447         num_decodes variables.
5448
5449         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5450         change as it doesn't seem to work.
5451         
5452         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5453         wrappers.
5454
5455 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5456
5457         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5458         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5459
5460         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5461         builder when using full aot.
5462
5463         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5464         here, it is already handled.
5465         
5466         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5467         correctly for IMT.
5468
5469         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5470
5471         * mini-arm.h: Enable IMT for full aot.
5472         
5473         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5474         arch doesn't support it.
5475
5476         * mini.c (mini_init): Don't disable IMT for full aot if the
5477         architecture supports it.
5478
5479         * mini.h (MonoAotTrampoline): New enum containing the different types
5480         of 'numerous' trampolines.
5481         (MONO_AOT_FILE_VERSION): Bump this.
5482
5483         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5484         static rgctx trampolines. Add support for full-aot IMT thunks.
5485
5486         * mini-amd64.h: Enable IMT for full aot.
5487
5488         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5489         to exclude tests belonging to a category.
5490
5491         * generics.cs: Mark some tests with a !FULLAOT category.
5492
5493         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5494         generics tests.
5495
5496 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5497
5498         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5499         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5500         (emit_plt): Fix a warning.
5501
5502 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5503
5504         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5505         back into aot-compiler.c to a place where the other functions shared by
5506         the runtime and aot compiler are.
5507         
5508         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5509         as done previously, instead of in MonoAotFileInfo, since pointers might have
5510         alignment requirements.
5511
5512         * mini.h: Bump AOT file format version.
5513
5514 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5515
5516         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5517         that is used at runtime from the aot-compiler.c, this makes it
5518         work on setups that remove the AOT compiler from the output
5519         image. 
5520
5521 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5522
5523         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5524         PPC.
5525
5526         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5527
5528         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5529
5530         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5531         stuff to mono_arch_decompose_long_opts ().
5532         (mono_decompose_opcode): Remove some dead code.
5533
5534 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5535
5536         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5537         cmethod can be null for quite a some reasons.
5538
5539 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5540
5541         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5542
5543 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5544
5545         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5546
5547 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5548
5549         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5550         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5551         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5552         calls returning structures by addr on amd64.
5553
5554         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5555
5556         * iltests.il.in: Restructure the tail call tests a bit.
5557         
5558 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5559
5560         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5561         for virtual methods too.
5562
5563 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5564
5565         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5566         due to regression in verifying System.dll.
5567
5568 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5569
5570         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5571         in dynamic methods.
5572
5573         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5574         instances.
5575
5576         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5577         g_str_hash () which can change.
5578
5579         * driver.c (mini_regression): Disable optimizations not supported by
5580         the cpu. Fixes #500019.
5581
5582         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5583         build.
5584
5585 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5586
5587         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5588         to the latest LLVM code.
5589
5590 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5591
5592         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5593
5594 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5595
5596         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5597         x86/amd64.
5598
5599         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5600         no longer saving offsets, so just save the patch types along with the other
5601         info.
5602         * aot-runtime.c (load_patch_info): Update after the changes to 
5603         encode_patch_list ().
5604         (decode_got_entry): Removed, merged into load_patch_info ().
5605         (is_shared_got_patch): Removed, call the same function from
5606         aot-compiler.c.
5607
5608         * mini.h: Bump aot file format version.
5609         
5610         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5611         half-finished no-dlsym code.
5612
5613         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5614         option.
5615
5616         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5617         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5618
5619 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5620
5621         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5622         buffer length to work with AOT code.
5623
5624         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5625         ldfld/stfld opcodes.
5626
5627         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5628         as it is not used.
5629
5630         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5631
5632         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5633
5634         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5635         LLVM API.
5636
5637         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5638         if needed. Don't decompose long operations when using llvm.
5639
5640 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5641
5642         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5643         PAGESIZE constant.
5644
5645         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5646
5647 2009-05-03  Martin Baulig  <martin@ximian.com>
5648
5649         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5650         mono_debugger_insert_method_breakpoint() since the class init
5651         handler we're inserting at the top of the method already gives us
5652         a notification.
5653
5654 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5655
5656         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5657         to mono_arch_decompose_long_opts () for x86 and arm.
5658
5659 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5660
5661         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5662         TARGET_AMD64 here.
5663
5664 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5665
5666         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5667         JIT code.
5668
5669 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5670
5671         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5672         number of trampolines used in full-aot mode.
5673
5674         * aot-compiler.c: Add an ntrampolines option to set the number of 
5675         trampolines emitted in full-aot mode.
5676
5677 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5678
5679         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5680         a volatile load. Get rid of get_tempname (), llvm assigns names
5681         automatically.
5682
5683         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5684         builder function.
5685
5686         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5687         a value.
5688
5689         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5690         level 1.
5691
5692         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5693         to the same register as a fixed sreg2. Fixes #497271.
5694
5695         * iltests.il.in: Add a new test.
5696
5697 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5698
5699         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5700         stack, since pushes complicate exception handling.
5701
5702         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5703         the stack if they are passed using moves.
5704
5705         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5706
5707         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5708         when using llvm.
5709
5710         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5711         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5712         of FMOVE if it is an R4.
5713
5714 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5715
5716         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5717
5718         * mini.h (LLVMCallInfo): New structure to store calling convention 
5719         information for the LLVM back end similar to the CallInfo structures in 
5720         the back-ends.
5721
5722         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5723         call information in a format usable by LLVM.
5724         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5725
5726         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5727         mono_llvm_emit_call () when compiling using LLVM.
5728
5729         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5730         comments to all functions. Fix memory leaks. Add a public init/cleanup
5731         function.
5732
5733         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5734
5735         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5736         mono_array_new_va () jit icall.
5737         
5738 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5739
5740         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5741         multiple machine description files to be specified.
5742         * mini-ops.h: fixes for cross-compilation.
5743
5744 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5745
5746         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5747         some porting work.
5748
5749 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5750
5751         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5752         to prevent asserts in various passes. Fixes #497220.
5753
5754 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5755
5756         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5757         a racy assert.
5758
5759         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5760         table to avoid duplicates.
5761
5762         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5763         
5764         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5765         option is used.
5766
5767 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5768
5769         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5770         is for method or field access.
5771
5772 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5773
5774         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5775         a Value to stdout.
5776
5777         * mini-llvm.c (mono_llvm_emit_method): Use it.
5778         
5779         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5780         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5781         on volatile values.
5782
5783         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5784         synchronized methods.
5785
5786         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5787
5788         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5789
5790         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5791         OP_LOADI8_MEM.
5792
5793         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5794         allowing some options to be set dynamically.
5795
5796 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5797
5798         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5799         unconditional branch.
5800
5801         * mini.h (MonoTrampolineType): Add new trampoline type 
5802         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5803         compiled code.
5804
5805         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5806         function.
5807
5808         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5809         creation function.
5810
5811         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5812         is enabled. Instead, use the llvm vcall trampoline.
5813         
5814         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5815
5816         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5817         
5818         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5819         functions.
5820
5821         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5822         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5823
5824         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5825         OP_IA64_CSET opcode.
5826
5827         * mini.c: Fix a warning.
5828
5829         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5830         THROW to the appropriate llvm type.
5831
5832 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5833
5834         * mini.c (mini_method_compile): Add statistics for methods JITted
5835         with/without LLVM.
5836
5837 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5838
5839         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5840         OP_IA64_CMP_<cond>_IMM opcodes.
5841
5842 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5843
5844         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5845         corlib exceptions.
5846
5847         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5848         correctly.
5849
5850         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5851         GENERICINST.
5852
5853 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5854
5855         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5856
5857 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5858
5859         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5860         support.
5861
5862         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5863         rgctx invoke trampolines for x86.
5864
5865         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5866         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5867         (mono_arch_get_vcall_slot): Simplify this.
5868
5869 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5870
5871         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5872         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5873
5874 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5875
5876         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5877         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5878
5879         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5880
5881         * liveness.c (visit_bb): Remove a needless assert.
5882
5883 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5884
5885         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5886         full aot support to the arch specific code.
5887
5888         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5889
5890         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5891
5892         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5893         
5894         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5895         collect information about the delegate invoke impl trampolines.
5896
5897         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5898         to save trampolines during full-aot mode.
5899
5900         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5901         creation function which returns a trampoline which sets the rgctx
5902         argument.
5903         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5904         wrapper if possible.
5905         (mono_delegate_trampoline): Ditto.
5906
5907         * mini.c (mono_jit_runtime_invoke): Ditto.
5908
5909         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5910         
5911         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5912
5913         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5914         
5915 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5916
5917         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5918         just setting the opcode to OP_NOP.
5919
5920 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5921
5922         * mini.c (mini_method_compile): Put the last change inside an 
5923         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5924         
5925         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5926         and extend live ranges to cover the whole method when using xdb.
5927
5928         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5929         do it in the trampolines.
5930
5931         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5932         needed.
5933
5934         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5935         
5936         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5937         call code in full-aot mode since IMT is disabled there.
5938         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5939         new JIT no longer has that restriction.
5940
5941         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5942
5943         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5944         a more compact format.
5945         (mono_aot_wrapper_name): New function to return a unique name for a
5946         wrapper method, also used by the AOT runtime.
5947
5948         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5949         aot-compiler.c.
5950
5951         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5952         when a ICollection<T> etc is encountered.
5953         (add_generic_instances): Process method arguments/locals too.
5954         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5955         trampoline names.
5956
5957         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5958         
5959 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5960
5961         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5962
5963         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5964
5965         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5966         representing the result of the decomposition. Nullify instructions
5967         instead of setting them to OP_NOP since nops can't have registers
5968         set.
5969
5970 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5971
5972         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5973         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5974         info. Strip 'mapping symbols' on ARM.
5975
5976         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5977         
5978         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5979         this with the native genmdesc.
5980
5981 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5982
5983         * aot-runtime.c:  Fixing the MSVC build.
5984
5985         Code is contributed under MIT/X11 license.
5986
5987 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5988
5989         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5990         JITted code depends on it.
5991
5992 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5993
5994         * aot-compiler.c: Use new MonoGenericParam accessors.
5995
5996 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5997
5998         Reduce memory usage and improve correctness wrt MonoGenericParam
5999         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
6000         handing.  Avoid allocating MonoGenericParams, but use the ones in
6001         the container itself.
6002
6003 2009-04-07  Miguel de Icaza  <miguel@novell.com>
6004
6005         * tasklets.c: Return exceptions in the out argument.
6006
6007 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
6008
6009         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
6010         opcode. Use pointer types in more places instead of casting them to 
6011         integers.
6012
6013         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
6014         optimizations.
6015         (mono_llvm_optimize_method): New helper function to optimize a method.
6016
6017         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
6018         widening code so it could be called from more places.
6019         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
6020         code paths in the call opcodes.
6021
6022 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
6023
6024         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
6025
6026 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
6027
6028         * dwarfwriter.c: Use _ to separate class name 
6029         components as gdb can't handle '.'. Represent reference variables
6030         as 'class <NAME>&'.
6031         
6032         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
6033
6034         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
6035         
6036         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
6037
6038         * gc-test.cs: New file with GC stack marking tests.
6039         
6040         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
6041         negative numbers for vfp.
6042
6043         * basic-float.cs: Add a test.
6044         
6045 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
6046
6047         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
6048
6049 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
6050
6051         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
6052         part of tasklet/continuation support.
6053
6054 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
6055
6056         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
6057         amd64 opcodes inside an ifdef.
6058
6059         * dwarfwriter.c: Emit inheritance information for classes, emit fields
6060         of complex types.
6061         
6062         * dwarfwriter.c (emit_type): Emit the class info for classes.
6063
6064 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
6065
6066         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
6067
6068         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
6069
6070         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
6071
6072         * ssa.c (mono_ssa_compute): Fix some memory leaks.
6073
6074 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
6075
6076         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
6077
6078         * mini-llvm.c: Update comments.
6079
6080         * mini.h (COMPILE_LLVM): New macro.
6081
6082         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
6083
6084         * ssa.c (mono_ssa_compute): Ditto.
6085         
6086         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
6087         the unwind ops from a DWARF FDE.
6088
6089         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
6090         methods by extracting the dwarf unwind ops from the unwind info generated
6091         by LLVM.
6092         
6093         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
6094         calls.
6095
6096         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
6097         addressing modes.
6098
6099 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
6100
6101         * Makefile.am (llvm_sources): Enable this.
6102
6103         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
6104         failing back to the JIT if something cannot be handled.
6105
6106         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
6107         compiling with LLVM.
6108
6109         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
6110         compiling with LLVM.
6111
6112         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
6113         compiling with LLVM.
6114
6115         * mini-ops.h: Add a few opcodes needed by LLVM.
6116
6117         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
6118         has no unwind info.
6119
6120         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
6121         backend.
6122
6123         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
6124
6125         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
6126
6127 2009-04-01  Mark Probst  <mark.probst@gmail.com>
6128
6129         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
6130         ridiculously large methods.
6131
6132 2009-03-31  Martin Baulig  <martin@ximian.com>
6133
6134         * debug-debugger.c (debugger_remove_breakpoint): Call
6135         mono_debugger_remove_class_init_callback ().
6136
6137 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
6138
6139         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
6140         right before emitting code, not at the start.
6141
6142         * mini.c (mono_postprocess_patches): Extract this into a separate function
6143         from mono_codegen ().
6144
6145         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
6146         byref types correctly.
6147
6148 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
6149
6150         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
6151         by the last change.
6152
6153 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
6154
6155         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
6156         indirect calls, this avoids problems where get_vcall_slot () would get
6157         confused by the native code for the instruction preceeding the call.
6158         (mono_arch_get_vcall_slot): Simplify this.
6159         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
6160
6161         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
6162         register allocator now seems to depend on them instead of the data in
6163         cpu-<ARCH>.md.
6164
6165         * mini.c (mini_method_compile): Throw the correct type of exception if
6166         mono_method_get_header () fails because of a loading error.
6167
6168 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
6169
6170         * mini.c (mini_method_compile): Clear the loader error if the method
6171         header cannot be decoded.
6172
6173         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
6174         interface methods on proxies correctly.
6175
6176         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
6177         this argument for vtype methods. Add precise liveness info for arguments.
6178
6179         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
6180         LIVERANGE_START/END opcodes.
6181
6182         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
6183         for arguments and values in registers.
6184
6185 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
6186
6187         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
6188         return a valuetype. Fixes #487518.
6189
6190         * iltests.il: Add a test.
6191         
6192         * aot-compiler.c: Use mono_thread_create () to create helper threads.
6193
6194         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
6195         closed over a null reference correctly.
6196
6197 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6198
6199         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
6200
6201 2009-03-25  Mark Probst  <mark.probst@gmail.com>
6202
6203         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
6204         allocated to the same registers as fixed sregs.
6205
6206 2009-03-24  Mark Probst  <mark.probst@gmail.com>
6207
6208         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
6209         ATOMIC_CAS_IMM ops.
6210
6211         * method-to-ir.c: Handle more cases for
6212         Interlocked.CompareExchange.
6213
6214         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6215         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6216         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6217
6218 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6219
6220         * aot-runtime.c (decode_method_ref): Fix a warning.
6221
6222         * unwind.c (mono_unwind_frame): Ditto.  
6223
6224 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6225
6226         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6227         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6228
6229         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6230         fix the handling of large values in the ALU_PC_G0_NC relocation.
6231
6232 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6233
6234         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6235
6236 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6237
6238         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6239         ops.
6240
6241 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6242
6243         * method-to-ir.c: MINI_OP3 needs a comma.
6244
6245         * method-to-ir.c, mini.h, mini.c: Remove
6246         mono_init_op_sreg_counts ().
6247
6248 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6249
6250         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6251         OP_JMP.
6252         
6253         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6254         assertion.
6255
6256         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6257
6258         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6259         code somewhat.
6260
6261 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6262
6263         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6264         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6265         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6266         operations.
6267
6268 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6269
6270         * driver.c: Change location of gc_wrapper.h.
6271
6272         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6273         inside finally clauses correctly. Fixes #485721.
6274
6275         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6276         after the change above.
6277
6278         * exceptions.cs: Add a test.
6279         
6280 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6281
6282         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6283
6284         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6285         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6286         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6287
6288         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6289         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6290
6291 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6292
6293         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6294         Simplify logic for ensure_method_is_allowed_to_call_method. 
6295         Handle wrappers on callers.
6296
6297 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6298
6299         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6300         them don't run yet.
6301
6302         * basic-simd.cs: Fix the names of some test methods.
6303
6304 2009-03-18  Geoff Norton  <gnorton@novell.com>
6305
6306         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6307
6308 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6309
6310         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6311
6312 2009-03-17  Jb Evain  <jbevain@novell.com>
6313
6314         * driver.c: remove now uneeded call to mono_gc_base_init before
6315         mono_profiler_load.
6316
6317 2009-03-17  Jb Evain  <jbevain@novell.com>
6318
6319         * dwarfwriter.c (token_handler): handle more cases.
6320
6321 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6322
6323         * method-to-ir.c: Remove more dead code (that was required only
6324         because of method_is_safe). Fix compiler warnings.
6325
6326 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6327
6328         * method-to-ir.c: Remove unneeded/useless method_is_safe
6329         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6330
6331 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6332
6333         * mini.c (mini_method_compile): Print the method been compiled with
6334         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6335         for people not familiar with the runtime.
6336
6337 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6338
6339         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6340         a managed object which is later put into a GList. Return its class instead.
6341
6342         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6343         stack slots when using sgen.
6344
6345 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6346
6347         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6348
6349 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6350
6351         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6352         > so it works on the first vreg as well.
6353
6354 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6355
6356         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6357         trigger randomly.
6358
6359         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6360         
6361         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6362         implement GArray.
6363
6364 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6365
6366         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6367         native->IL offset mapping.
6368
6369 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6370
6371         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6372
6373         * basic.cs: Add a test.
6374
6375 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6376
6377         * mini-x86.c (mono_arch_output_basic_block): Use different
6378         registers in case the ones we want to overwrite are used by the
6379         other operand.  Fixes regression in #480807.
6380
6381 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6382
6383         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6384
6385         * dwarfwriter.c (emit_line_number_info): The line number info for
6386         IL code was off by one. Fix that.
6387
6388         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6389         stack.
6390
6391 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6392
6393         Contributed under the terms of the MIT/X11 license by Steven
6394         Munroe <munroesj@us.ibm.com>.
6395
6396         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6397         Fixes #483462.
6398
6399 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6400
6401         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6402         as well.
6403
6404 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6405
6406         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6407         the delegate ctor handling code. Fixes #482638.
6408         
6409         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6410         #481458.
6411
6412         * iltests.il.in: Add a test.
6413         
6414         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6415         mini-posix.c.
6416
6417 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6418
6419         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6420         is shared generic code, return the trampoline, even if the method
6421         has already been compiled.  Fixes #479763.
6422
6423         * mini.c, mini.h: New function
6424         mono_jit_find_compiled_method_with_jit_info() which is the same as
6425         mono_jit_find_compiled_method() but also returns the jit info.
6426
6427 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6428
6429         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6430         for methods which actually have one.  For all other methods, make
6431         sure the this argument var is live the whole method.
6432
6433         * mini.c (mini_method_compile): Every shared method has a
6434         this/vtable/mrgctx info.  Fixes #480807.
6435
6436 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6437
6438         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6439         generic/imt thunks where some entries branch through the vtable,
6440         while other entries branch directly.
6441
6442 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6443
6444         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6445
6446         * mini-windows.c: Ditto.
6447         
6448         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6449         ctors.
6450
6451 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6452
6453         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6454         down an assert.
6455
6456 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6457
6458         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6459         #481403.
6460
6461 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6462
6463         * exceptions-x86.c: Include debug-mini.h - fixes build.
6464
6465 2009-03-04  Martin Baulig  <martin@ximian.com>
6466
6467         * debug-mini.c: Clean up the exception API and add documentation.
6468         (mono_debugger_handle_exception): New public method; this is
6469         called when throwing an exception or encountering an unhandled one.
6470         (mono_debugger_call_exception_handler): Formerly known as
6471         mono_debugger_handle_exception(); this is used to tell the
6472         debugger that we're about to invoke an exception handler.
6473
6474 2009-03-04  Martin Baulig  <martin@ximian.com>
6475
6476         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6477         ../metadata/mono-debug-debugger.c; save and reset exception state.
6478
6479 2009-03-02  Martin Baulig  <martin@ximian.com>
6480
6481         * debug-mini.c: Moved the debugger exception handling here from
6482         ../metadata/mono-debug-debugger.c.
6483
6484         * debug-mini.h
6485         (MonoDebuggerExceptionAction): New exception typedef.
6486
6487         * debug-mini.c
6488         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6489
6490         * exceptions-amd64.c
6491         (mono_amd64_throw_exception): Use the new debugger exception
6492         handling code.
6493
6494         * mini-exceptions.c
6495         (mono_handle_exception_internal): Don't call
6496         mono_debugger_unhandled_exception() here.
6497
6498 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6499
6500         * mini.c aot-compiler.c: Update after the changes to 
6501         mono_marshal_get_runtime_invoke ().
6502
6503         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6504         Virtual generic methods might not have method->slot set, work around
6505         that.
6506
6507         * generics.cs: Add a test.
6508
6509 2009-03-02  Geoff Norton  <gnorton@novell.com>
6510
6511         * mini.c:
6512         * driver.c: Allow signal chaining of SIGFPE as well.
6513
6514 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6515
6516         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6517         this since it now receives the method not its generic context in the
6518         IMT reg.
6519
6520         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6521         generic/imt thunks where some entries branch through the vtable, while
6522         other entries branch directly.
6523
6524         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6525
6526         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6527         support for interface methods as well.
6528
6529         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6530         using the normal IMT thunks.
6531
6532         generics.cs: Add new tests.
6533         
6534         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6535         the generic inst to the generic imt thunks. This fixes AOT support, 
6536         improves consistency with the normal IMT thunks, and makes it easier to
6537         add support for interface generic virtual methods later.
6538
6539         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6540         
6541 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6542
6543         * driver.c (mono_set_signal_chaining): New public API function to enable
6544         signal chaining on POSIX platforms.
6545
6546         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6547         (si@lindenlab.com) to implement signal chaining. The original patch was
6548         contributed under the MIT X/11 license:
6549         https://bugzilla.novell.com/show_bug.cgi?id=318894
6550
6551 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6552
6553         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6554         too until it can be made to run on amd64.
6555
6556 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6557
6558         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6559         to  get_generic_context_from_code () + get_call_info () if possible.
6560
6561 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6562
6563         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6564         suspend-on-sigsegv functionality.
6565
6566         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6567         to suspend when a native SIGSEGV is received. This is useful for debugging
6568         crashes which don't happen under gdb, since a live process contains more
6569         information than a core file.
6570
6571         * mini-exceptions.c (mono_print_thread_dump): Use 
6572         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6573
6574         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6575
6576         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6577         
6578         * basic-float.cs: Disable the tests which currently fail on amd64.
6579
6580         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6581         value to mono_arch_patch_callsite () to fix crashes.
6582         
6583         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6584
6585 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6586
6587         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6588         nop code by patching the call address to point to the nullified class init
6589         trampoline, as the former does not seem to be safe on SMP machines.
6590
6591 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6592
6593         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6594         they were wrong.
6595
6596 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6597
6598         * basic-float.cs basic-calls.cs: Fix warnings.
6599
6600 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6601
6602         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6603         correct frame pointer in the LMF.  Should fix #478394.
6604
6605 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6606
6607         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6608
6609         * image-writer.c: Make the binary writer less verbose.
6610
6611 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6612
6613         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6614         are called from runtime invoke wrappers.
6615
6616 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6617
6618         * cpu-ppc.md (store_memindex): Increase the size of this.
6619
6620 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6621
6622         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6623
6624         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6625
6626         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6627         OP_LCONV_TO_R_UN.
6628
6629         Last fix for of #467201.
6630
6631
6632 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6633
6634         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6635
6636         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6637         and long_conv_to_r8_2:
6638
6639         Fixed part of #467201.
6640
6641 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6642
6643         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6644
6645         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6646         conversion to 32 bits.
6647
6648         * cpu-x86.md: Increase the size of int_conv_to_r4.
6649
6650         * basic-float.cs: Add a test for this.
6651
6652         Fixed part of #467201.
6653
6654 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6655
6656         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6657
6658         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6659         conversion to 64 bits.
6660
6661         * basic-float.cs: Add a test for this.
6662
6663         Fixed part of #467201.
6664
6665 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6666
6667         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6668
6669         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6670         This behavior is compatible with MS.
6671
6672         * iltest.il.in: Add a test for this.
6673
6674         Fixed part of #467201.
6675
6676 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6677
6678         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6679
6680         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6681         change the precision of the value.
6682
6683         * cpu-x86.md: Define len for float_conv_to_r4.
6684
6685         * basic-float.cs: Add a test for this.
6686
6687         Fixed part of #467201.
6688
6689 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6690
6691         * mini.c: Adjust locking order to the new semantics where the loader lock
6692         comes first.
6693
6694 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6695
6696         * aot-runtime.c:
6697         * mini-amd64.c:
6698         * mini-arm.c:
6699         * mini-ia64.c:
6700         * mini-mips.c:
6701         * mini-ppc.c:
6702         * mini-sparc.c:
6703         * mini-trampolines.c:
6704         * mini-x86.c:
6705         * mini.c:
6706         * tramp-alpha.c:
6707         * tramp-amd64.c:
6708         * tramp-arm.c:
6709         * tramp-hppa.c:
6710         * tramp-ia64.c:
6711         * tramp-mips.c:
6712         * tramp-ppc.c:
6713         * tramp-s390.c:
6714         * tramp-s390x.c:
6715         * tramp-sparc.c:
6716         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6717
6718 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6719
6720         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6721         as it is incorrect.
6722
6723 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6724
6725         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6726         for cctors if needed.
6727
6728 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6729
6730         * mini-ppc.c: Fix build on Darwin.
6731
6732 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6733
6734         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6735         version instead of 3 as valgrind doesn't like version 3.
6736
6737         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6738
6739         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6740         usable for hashing methods.
6741         (emit_extra_methods): Use the new hash to avoid putting every method in the
6742         same hash bucket.
6743
6744         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6745
6746         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6747         whenever a method ref could match a method.
6748         
6749         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6750         test to fail.
6751         
6752         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6753         methods refs.
6754
6755         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6756
6757         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6758         the encoding buffer.
6759
6760         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6761         mono_method_get_header () on inflated methods as an optimization.
6762
6763 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6764
6765         * ssa.c (fold_ins): Fix another crash if the instruction following the
6766         switch was optimized away.
6767
6768 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6769
6770         Contributed under the terms of the MIT/X11 license by Steven
6771         Munroe <munroesj@us.ibm.com>.
6772
6773         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6774
6775 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6776
6777         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6778         around the mono_domain_alloc calls, it is now done by the functions
6779         themselves.
6780
6781         * aot-compiler.c (compile_method): Only add wrappers referenced by
6782         the method if compiling with full AOT.
6783         (mono_compile_assembly): Error out if --aot=full is specified on
6784         a platform where it is not supported.
6785
6786         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6787         on ARM too.
6788
6789         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6790         AOT support.
6791
6792         * aot-runtime.c (load_named_code): Handle 
6793         mono_arm_throw_exception_by_token.
6794
6795         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6796
6797         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6798         unaligned.
6799
6800         * Makefile.am (fullaotcheck): Exit if a test fails.
6801
6802         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6803         on ARM.
6804         (mono_compile_assembly): Handle the assembler failing.
6805
6806         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6807         accepting subsections of .bss.
6808
6809         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6810         was optimized away.
6811
6812         * aot-compiler.c: Remove some unused includes.
6813         
6814         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6815         now in MonoImageWriter.
6816
6817         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6818         code sequence which matches a non-virtual call. Fixes #472654.
6819
6820 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6821
6822         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6823         xdebug code.
6824         
6825         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6826         use the image/dwarf writers directly.
6827
6828         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6829         field.
6830
6831         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6832         MonoDwarfWriter.
6833
6834         * image-writer.h: Fix some typos.
6835
6836         * dwarfwriter.h dwarfwriter.c: New files.
6837         
6838         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6839         separate module.
6840
6841         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6842         argument to return unwind info.
6843
6844         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6845
6846         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6847         
6848         * aot-runtime.c (decode_method_ref): Add a case for 
6849         MONO_AOT_METHODREF_WRAPPER_NAME.
6850
6851         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6852         for AOT.
6853
6854         * aot-compiler.c (encode_method_ref): Use the new constants.
6855
6856         * aot-runtime.c (decode_method_ref): Ditto.
6857
6858         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6859         be compiled, not the icall itself.
6860
6861 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6862
6863         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6864         using decode_method_ref ().
6865
6866         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6867         convert it to an in32. Fixes #475859.
6868
6869         * arrays.cs: Add a test.
6870
6871 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6872
6873         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6874         OP_LCONV_TO_U2.
6875
6876         * basic-long.cs: Add a test.
6877
6878 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6879
6880         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6881         remove the frame pointer in leaf methods which don't receive any
6882         arguments, don't throw exceptions and don't do dynamic stack
6883         allocations.
6884
6885 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6886
6887         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6888         the fail_tramp changes. Hopefully fixes #475132.
6889
6890 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6891
6892         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6893         instead of mono_metadata_signature_dup_full.
6894
6895 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6896
6897         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6898         for processing jump tables. Fixes #473787.
6899
6900 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6901
6902         * mini-generic-sharing.c: mini_method_get_context() just calls
6903         mono_method_get_context_general() now.
6904
6905         * mini.c, mini.h: Moved get_object_generic_inst(),
6906         construct_object_context_for_method() and
6907         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6908
6909 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6910
6911         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6912         basic block fell through to its successor bblock without a branch. Fixes
6913         #474718.
6914
6915         * iltests.il.in: Add a test.
6916         
6917         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6918         (can_encode_patch): We can now handle arrays of generic parameters and
6919         array methods.
6920
6921         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6922
6923         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6924         the AOT file to avoid some #ifdefs in aot-runtime.c
6925
6926         * mini.h: Bump AOT file format version.
6927
6928 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6929
6930         * Makefile.am (fullaotcheck): Make this run the tests.
6931
6932         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6933
6934 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6935
6936         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6937         individually.  Fixes #473482.
6938
6939 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6940
6941         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6942
6943 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6944
6945         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6946         (mono_compile_assembly): Hush compile warnings about
6947         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6948         code path.
6949
6950 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6951
6952         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6953
6954         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6955
6956         * aot-compiler.c: Fix arm support.
6957
6958         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6959         img_writer_emit_unset_mode () function.
6960
6961         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6962         (mono_unwind_get_dwarf_pc_reg): Ditto.
6963
6964         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6965         Move almost all platform specific code to a set of arch_ functions, 
6966         and document them to ease porting.
6967         
6968         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6969
6970         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6971
6972         * aot-compiler.c: Extract the image writing functionality into a separate
6973         module to reduce the size of this file.
6974
6975 2009-02-09  Geoff Norton  <gnorton@novell.com>
6976
6977         * mini-s390.c: Fix the signature of emit_sig_cookie.
6978
6979 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6980
6981         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6982
6983         * aot-runtime.c (is_shared_got_patch): Ditto.
6984
6985         * aot-runtime.c (load_named_code): Cope with the fact that 
6986         decode_got_entry () won't decode the patch fully if its corresponding got
6987         entry is already filled.
6988         
6989         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6990         Initialize *ji.
6991         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6992
6993         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6994         as the moving pointer instead of 'buf' for consistency with the rest of the
6995         codebase.
6996         (mono_arch_create_monitor_exit_trampoline): Ditto.
6997
6998         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6999         generic_class_init trampolines.
7000         (add_generic_class): Extract some code from add_generic_instances () into a
7001         separate function so it can be called from other places too.
7002         (compile_method): Call add_generic_class () for the classes of inflated methods
7003         referenced by the method.
7004         (can_encode_patch): Allow references to generic parameters.
7005
7006         * aot-runtime.c: Add support the patches required by the new trampolines.
7007         
7008         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
7009         support.
7010
7011         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
7012         full-aot support.
7013
7014         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
7015         this from get_throw_pending_exception, make the signature full aot compatible.
7016
7017         * Makefile.am (fullaotcheck): New target to run full-aot tests.
7018
7019         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
7020
7021         * exceptions.cs: Add a test.
7022
7023 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
7024
7025         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
7026         use the DWARF_DATA_ALIGN constant instead.
7027
7028         * exception-<ARCH>.c: Update after the above change.
7029
7030         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
7031         dwarf unwinder.
7032
7033         * mini-arm.c: Enable the dwarf unwinder.
7034
7035         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
7036         instead of mono_class_setup_vtable ().
7037
7038 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
7039
7040         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
7041         dwarf unwinder.
7042
7043         * mini-x86.h: Enable the dwarf unwinder.
7044
7045 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
7046
7047         Fix mcs/tests/test-7.cs
7048         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
7049         2009-02-03.
7050
7051 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
7052
7053         * mini.c (print_jit_stats): Remove some unused statistics.
7054
7055 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7056
7057         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
7058
7059 2009-02-05  Mark Probst  <mark.probst@gmail.com>
7060
7061         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
7062         the method we get from mono_object_get_virtual_method() because
7063         that function does it properly, now.
7064
7065 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7066
7067         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
7068         opcodes. Fixes #472775.
7069
7070 2009-02-05  Mark Probst  <mark.probst@gmail.com>
7071
7072         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
7073         fact that mono_find_jit_info() sometimes returns the context
7074         corresponding to the jit info in new_ctx.  Fixes #472600.
7075
7076 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7077
7078         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
7079         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
7080         klass->enum_basetype directly.
7081
7082         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
7083         enum subtypes.
7084
7085         * unwind.c: Avoid 0 sized arrays.
7086
7087 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7088
7089         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
7090         size on systems with 64k pages. Fixes #471389.
7091
7092 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7093
7094         Contributed under the terms of the MIT/X11 license by Steven
7095         Munroe <munroesj@us.ibm.com>.
7096
7097         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
7098         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
7099         necessary.
7100
7101 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7102
7103         Contributed under the terms of the MIT/X11 license by Steven
7104         Munroe <munroesj@us.ibm.com>.
7105
7106         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
7107         comparison fix.
7108
7109         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
7110         The trampoline can be longer on PPC64.
7111
7112 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7113
7114         Contributed under the terms of the MIT/X11 license by Steven
7115         Munroe <munroesj@us.ibm.com>.
7116
7117         * mini-ppc.c: Compiler warning fixes and trivial code
7118         simplifications.
7119
7120 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7121
7122         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
7123         ins->dreg which could be a hardware register, not a vreg.
7124
7125         * aot-compiler.c (emit_method_dwarf_info): Ditto.
7126         
7127         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
7128         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
7129
7130         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
7131         
7132         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
7133         ->dreg, that is not the vreg we are looking for.
7134
7135         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
7136
7137         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
7138         LIVERANGE_END.
7139
7140         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
7141         strange crashes.
7142
7143 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
7144
7145         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
7146
7147         * aot-compiler.c (emit_line_number_info): Fix line number emission when
7148         the line diff is 0.
7149
7150         * aot-compiler.c: Add xdebug support on x86.
7151
7152         * unwind.c: Add x86 support.
7153         
7154         * aot-compiler.c (emit_exception_debug_info): Control the emission of
7155         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
7156
7157         * mini.c (mini_method_compile): Ditto.
7158         
7159         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
7160         the variable index.
7161
7162         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
7163         which mimic .push_section/.pop_section in GAS.
7164         
7165         * aot-compiler.c: Emit precise live range information for variables.
7166
7167         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
7168
7169         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
7170         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
7171         them.
7172
7173         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
7174         the live ranges of variables.
7175
7176         * mini.h (struct MonoMethodVar): Add two fields containing the live range
7177         of the variable in terms of native offsets.
7178
7179 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
7180
7181         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
7182         
7183 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7184
7185         Contributed under the terms of the MIT/X11 license by Steven
7186         Munroe <munroesj@us.ibm.com>.
7187
7188         * exceptions-ppc.c (restore_regs_from_context): Correct operand
7189         order (offset then base reg) for ppc_load_multiple_regs.
7190         (emit_save_saved_regs) Correct operand order for
7191         ppc_store_multiple_regs.
7192         (mono_arch_get_call_filter): Correct operand order for
7193         ppc_load_multiple_regs.
7194
7195         * mini-ppc.c (emit_memcpy): Fix operand order for
7196         ppc_load_reg_update and ppc_store_reg_update.
7197         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
7198         (mono_arch_emit_epilog): Correct operand order for
7199         ppc_load_multiple_regs.
7200
7201         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
7202         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
7203
7204 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7205
7206         * cpu-ppc64.md: Fixed storer4_memindex length.
7207
7208 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
7209
7210         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
7211         line number info.
7212         
7213         * aot-compiler.c (emit_line_number_info): Optimize this.
7214
7215 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7216
7217         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7218         
7219         * aot-compiler.c: Add debug info for methods without debug info by
7220         emitting an IL file and having the line number info referencing that file.
7221
7222         * aot-compiler.c: Optimize the size of the generated line number info.
7223
7224         * aot-compiler.c: Emit line number info in xdebug mode.
7225
7226         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7227         million arguments.
7228
7229 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7230
7231         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7232
7233         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7234         is used.
7235
7236 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7237
7238         * basic-calls.cs: Test for the weird crash found on arm.
7239         
7240 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7241
7242         * cpu-arm.md: Increase the size of storer8_membase_reg and
7243         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7244
7245         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7246         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7247         reg to LR otherwise we'll be loading/storing from just the offset.
7248
7249 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7250
7251         Question: if we are storing gint32's inside the "*native_offset",
7252         should we change the signature to "gint32 *native_offset" to
7253         ensure that we do not have type definition problems?
7254         
7255         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7256         an int * as this is what the other function expects, causes
7257         problems with Freescale's compiler that defined int32_t to be a
7258         long and makes int incompatible 
7259
7260 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7261
7262         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7263         filename conflict with bjam.
7264
7265 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7266
7267         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7268         as it might use decomposed ops.
7269
7270 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7271
7272         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7273
7274         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7275         is defined.
7276
7277         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7278
7279         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7280         offsets.
7281
7282         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7283         way registers are stored in MonoContext on arm.
7284
7285         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7286         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7287
7288         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7289
7290         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7291
7292         * mini.c (mini_init): Register mono_isfinite.
7293
7294         * jit-icalls.c (mono_isfinite): New jit icall.
7295
7296         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7297         
7298         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7299         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7300         the parent frame.
7301
7302 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7303
7304         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7305         separate frame and stack pointers, so we must use FP to find the register
7306         spill area.
7307         The FP reg is retrieved from the MonoContext::regs array.
7308
7309 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7310
7311         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7312         as FPA requires it.
7313
7314 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7315
7316         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7317         return R4 and R8 when not running under softfloat.
7318
7319         Fixes basic-calls.exe
7320
7321 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7322
7323         * mini-arm.c: Implement some overflow opcodes.
7324
7325 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7326
7327         * ssa.c: handle another alloca.h
7328
7329         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7330         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7331         MONO_ARCH_USE_SIGACTION. 
7332
7333         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7334         capability defines.
7335
7336         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7337
7338         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7339         PPC targets as sigaction does not exist on all platforms, define
7340         this on a per-platform basis.
7341
7342         Instead of erroring out if the platform is not defined, include
7343         mini-ppc-os.h, and expect that the OS specific setting provides
7344         the required information.   
7345
7346 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7347
7348         * aot-compiler.c: Fix --enable-minimal=aot.
7349
7350 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7351
7352         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7353         previous change.
7354
7355 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7356
7357         * exceptions-arm.c: Fix warnings.
7358
7359         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7360         ARM.
7361
7362         * mini-x86.c: Fix --enable-minimal=jit build.
7363
7364         * mini.c: Really fix --enable-minimal=jit build.
7365         
7366         * mini.c (construct_object_context_for_method): Move this outside
7367         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7368
7369         "Backported" of r124984 from 2.0 branch.
7370         
7371         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7372
7373         "Backport" of r124977 + r124978 from 2.0 branch.
7374         
7375         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7376         to avoid calling mono_exception_from_token () from the throw trampoline.
7377         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7378         for throwing corlib exceptions, this fixes full-aot support for corlib
7379         exceptions.
7380
7381         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7382
7383 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7384
7385         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7386         part of the changes to split the code in mini into operating
7387         system specific files.
7388
7389         This patch was done by copying mini.c to the respective files to
7390         preserve SVN history.
7391
7392 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7393
7394         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7395
7396 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7397
7398         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7399         remoting-invoke-with-check wrappers of shared methods.
7400
7401         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7402
7403 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7404
7405         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7406         optimization if the top of stack is the last instruction in the
7407         bblock.  Otherwise it might have been used after its definition.
7408         Fixes #469742.
7409
7410 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7411
7412         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7413         method as well when get_vcall_slot () fails to match a code sequence.
7414
7415         * mini-arm.c: Fix the android build, which doesn't have
7416         __aeabi_read_tp.
7417
7418 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7419
7420         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7421         the s390x build.
7422
7423 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7424
7425         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7426
7427 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7428
7429         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7430         and put its id into jinfo->used_regs. This is only used on amd64,
7431         which is currently the only platform generating unwind info.
7432
7433         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7434         the dwarf unwinder. This is required to correctly handle async exceptions
7435         like thread abort and stack overflows, which can happen while a method
7436         is in the middle of its prolog or epilog.
7437         
7438         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7439         the unwind info belonging to an AOTed method.
7440
7441         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7442         into cfg->unwind_ops.
7443         
7444         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7445
7446         * mini.c (mini_init): Call mono_unwind_init ().
7447         (mini_cleanup): Call mono_unwind_cleanup ().
7448
7449         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7450         unwind info to be shared between methods.
7451
7452         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7453         saved in the LMF.
7454
7455         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7456         get_throw_pending_exception () to avoid initialization races.
7457
7458         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7459         mono_arch_exceptions_init () function.
7460
7461         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7462
7463 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7464
7465         * mini.c (mono_get_domain_intrinsic): New helper function.
7466         (mono_get_thread_intrinsic): Ditto.
7467
7468         * mini-arm.c mini-ia64.c: Use the new helper functions.
7469         
7470         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7471         the last constrained_call change, since it is needed in the non-AOT
7472         case as well.
7473
7474         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7475         
7476         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7477         mono_get_lmf_addr () on arm eabi linux.
7478
7479 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7480
7481         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7482         code sequence which matches a non-virtual call.
7483
7484 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7485
7486         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7487         stack pointer (r1).
7488
7489 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7490
7491         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7492         runtime-invoke wrappers, since they are also shared based on signature.
7493
7494 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7495
7496         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7497         info from the (correct) context.
7498
7499 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7500
7501         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7502         
7503         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7504         using dwarf unwinding info. Not yet used.
7505
7506         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7507
7508 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7509
7510         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7511         descriptors.
7512
7513         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7514         special case and handle mono_arch_delegate_invoke_impl() returning
7515         function descriptors.
7516
7517         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7518         trampolines return function descriptors, too.
7519
7520 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7521
7522         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7523         out_of_line optimization.
7524
7525 2009-01-21  Martin Baulig  <martin@ximian.com>
7526
7527         * mini.h
7528         (MonoCompile): Added `disable_deadce_vars' to disable removing
7529         unused variables.
7530
7531         * mini.c
7532         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7533         inside the debugger.
7534
7535         * liveness.c (mono_analyze_liveness): Don't remove any unused
7536         variables if `cfg->disable_deadce_vars' is set.
7537
7538 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7539
7540         * method-to-ir.c: Only apply exception constructor optimization if
7541         the the method actually belongs to an exception class.  Fixes
7542         #467456.
7543
7544 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7545
7546         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7547         change inside a #ifdef __mono_ppc64__.
7548
7549         * aot-compiler.c (compile_method): Remove the previous limitation.
7550
7551         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7552         on type variables in AOTed code.
7553         
7554         * aot-compiler.c (compile_method): Skip generic methods having type 
7555         constraints on their generic parameters.
7556
7557         * aot-compiler.c (compile_method): Check for methods which cannot be
7558         encoded inside RGCTX_FETCH patches as well.
7559
7560         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7561         build.
7562
7563 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7564
7565         * method-to-ir.c: Force the vtable variable in shared generic code
7566         for the case that they might show up on a stack trace where they
7567         are needed.
7568
7569         * mini-exceptions.c: Save and use generic sharing info as well as
7570         IP in stack traces to resolve shared generic instantiations.
7571
7572 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7573
7574         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7575         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7576
7577 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7578
7579         * method-to-ir.c: Do generic sharing for array constructors.
7580
7581 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7582
7583         * mini-exceptions.c (mono_print_thread_dump): Add information
7584         about the thread state using wapi_current_thread_desc.
7585
7586 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7587
7588         * basic-simd.cs: Tests for the new constructors. 
7589
7590 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7591
7592         * mini-ops.h: Added OP_EXPAND_*
7593
7594         * cpu-x86.md: Same.
7595
7596         * mini-x86.c (mono_arch_output_basic_block): Same.
7597         
7598         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7599
7600 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7601
7602         * iltests.il.in: Add a test for #467385.
7603
7604 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7605
7606         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7607         thread been cleaned up is not the same currently in execution.
7608
7609         Fixes appdomain-unload crashes on windows, osx and linux variants
7610         without the __thread keyword.
7611
7612 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7613
7614         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7615         (koush@koushikdutta.com). Implement this for android.
7616
7617         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7618         begins with a digit.
7619
7620         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7621         mono_marshal_get_write_barrier ().
7622
7623 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7624
7625         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7626         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7627         that pass them on a register pair.
7628
7629         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7630         test was crashing due to that.
7631
7632 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7633
7634         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7635         trampoline code. Include ucontext.h only if available.
7636
7637 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7638
7639         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7640         and doesn't check whether it's sharable, like it was before
7641         removing the shared generics hash.  This brings IronPython
7642         performance back to what it was before that change.
7643
7644 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7645
7646         * method-to-ir.c: Handle delegate invocation optimization earlier,
7647         otherwise it would be handled (much more slowly) by the
7648         final/sealed optimization.
7649
7650 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7651
7652         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7653         domain is not set. Fixes #465864.
7654
7655 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7656
7657         * method-to-ir.c: Don't stop sharing of generic methods with catch
7658         clauses - we already handle those.
7659
7660 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7661
7662         * mini.c, mini.h: lookup_generic_method() is now
7663         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7664         making the shared_generics_hash obsolete.
7665
7666 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7667
7668         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7669         use the red zone.  Make room on the stack first and then use it,
7670         not the other way around.
7671
7672 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7673
7674         * mini.c (mini_init): Call mono_xdebug_init ().
7675
7676         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7677
7678 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7679
7680         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7681
7682         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7683         trampolines.
7684
7685         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7686         debug+unwind info for trampolines.
7687
7688         * mini.c (mono_create_unwind_op): New helper function.
7689
7690         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7691
7692 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7693
7694         * aot-compiler.c: Fix the build.
7695
7696 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7697
7698         * Makefile.am: Update dtrace-prelink.sh location.
7699
7700 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7701
7702         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7703         optimization. Fixes #464520.
7704
7705 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7706
7707         * mini-amd64.c : Adding code to save/restore non-volatile registers
7708            on Winx64.
7709
7710         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7711           registers on Winx64.
7712
7713         Contributed under MIT/X11 license.
7714
7715 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7716
7717         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7718         __GNUC_MINOR__ which can break when the major version changes.
7719
7720 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7721
7722         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7723
7724 2009-01-07  Geoff Norton  <gnorton@novell.com>
7725
7726         * helpers.c:  Allow mono -v -v -v to work on darwin.
7727
7728 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7729
7730         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7731           pattern. 
7732
7733         Contributed under MIT/X11 license.
7734
7735 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7736
7737         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7738         instead of directly accessing type->data.klass. Fixes #462016.
7739         (mono_allocate_stack_slots_full): Ditto.
7740
7741         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7742         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7743
7744         * aot-compiler.c (emit_plt): Fix ARM build.
7745
7746 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7747
7748         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7749         
7750         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7751         change.
7752
7753         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7754         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7755         #463357.
7756
7757         * iltests.il.in: Add a regression test.
7758
7759 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7760
7761         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7762
7763 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7764
7765         * basic-simd.cs: Add a regression test for #462457.
7766
7767 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7768
7769         * mini-ops.h: Add a definition of XPHI.
7770
7771         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7772
7773         * ssa.c (op_phi_to_move): Handle XPHI.
7774
7775         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7776
7777         Fixes #462457
7778
7779 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7780
7781         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7782
7783 2008-12-31  Geoff Norton  <gnorton@novell.com>
7784
7785         * mini-ppc.c: The prolog size allocated can be too small for darwin
7786         ppc32 under certain circumstances.  Also fix a small logic bug.
7787
7788 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7789
7790         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7791         while loading AOT methods.
7792
7793         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7794         since only the former is nulled out after a successful cast. This prevents
7795         crashes with rethrown exceptions when using --debug=casts.
7796
7797 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7798
7799         * mini.h: New macro for checking whether a method is final,
7800         i.e. whether the method or its class is marked final.
7801
7802         * method-to-ir.c: Use the new macro for all final-checks
7803         consistently.  Fixes the crash in the System.ServiceModel tests.
7804
7805 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7806
7807         * mini-exceptions.c (get_exception_catch_class): Corrected another
7808         overly strict assertion.
7809
7810 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7811
7812         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7813         Clobbering it is not allowed because the caller might use it as
7814         the vtable register in the interface call.
7815
7816 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7817
7818         * mini-exceptions.c (get_exception_catch_class): Corrected an
7819         overly strict assertion.
7820
7821 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7822         
7823         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7824
7825         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7826
7827         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7828
7829         * cpu-mips.md: correct lengths for certain long_ opcodes.
7830
7831         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7832
7833         * 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().
7834         
7835 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7836
7837         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7838         
7839 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7840         
7841         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7842         
7843 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7844
7845         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7846         next basic block.
7847         
7848 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7849
7850         * 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
7851
7852         * 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)
7853         
7854 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7855         
7856         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7857         
7858 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7859
7860         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7861         gshared code. Fixes #458947.
7862
7863         * generics.cs: Add a test.
7864
7865 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7866         
7867         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7868         
7869         * mini-mips.c: first pass n32 code generation.
7870
7871         * mini-mips.h: datatypes and defines for n32 support.
7872
7873         * exceptions-mips.c: first pass n32 code generation.
7874         
7875         * tramp-mips.c: first pass n32 code generation.
7876         
7877         * cpu-mips.md: add long_ opcodes.
7878         
7879 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7880
7881         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7882
7883         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7884         
7885         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7886         
7887         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7888
7889         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7890
7891         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7892
7893         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7894
7895         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7896
7897         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7898
7899 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7900
7901         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7902
7903 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7904
7905         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7906
7907 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7908
7909         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7910         descriptors for helper functions directly in front of the code.
7911
7912 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7913
7914         * method-to-ir.c: Removed an unnecessary assertion.
7915
7916 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7917
7918         * method-to-ir.c: Merge SGEN changes from the old JIT.
7919
7920 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7921
7922         * driver.c (compile_all_methods_thread_main): Handle failure of
7923         mono_get_method ().
7924
7925 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7926
7927         * mini-ppc.c: Merged with mini-ppc64.c.
7928
7929         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7930
7931         * Makefile.am: Use the same sources for PPC and PPC64.
7932
7933         * mini-ppc64.c: Removed.
7934
7935 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7936
7937         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7938         code to mono_bb_is_fall_through.
7939         
7940         * branch-opts.c (mono_remove_critical_edges): Same.
7941
7942 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7943
7944         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7945         expect that an OP_BR_REG will be there.
7946
7947 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7948
7949         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7950         for the many branch ops. The original check miss OP_BR_REG.
7951
7952         Fixes #457574.
7953         
7954 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7955
7956         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7957
7958 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7959
7960         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7961         while holding the aot lock.
7962
7963 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7964
7965         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7966         
7967 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7968
7969         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7970           to release all runtime callable wrappers held by the runtime.
7971
7972         Contributed under MIT/X11 license.
7973
7974 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7975
7976         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7977           for Winx64.
7978
7979         Contributed under MIT/X11 license.
7980
7981 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7982
7983         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7984         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7985
7986 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7987
7988         * cpu-mips.md: fix ckfinite length
7989
7990         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7991         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7992         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7993         
7994 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7995
7996         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7997         
7998 2008-12-08  Geoff Norton  <gnorton@novell.com>
7999
8000         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
8001         size by 8 bytes as well.
8002
8003 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8004
8005         * basic-simd.cs: Fix method names for Vector16b.
8006         
8007 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8008
8009         * basic-simd.cs: Fix method names for Vector16sb.
8010
8011 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8012
8013         * basic-simd.cs: Fix method names for Vector8us.
8014         
8015 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8016
8017         * basic-simd.cs: Fix method names for Vector8s.
8018         
8019 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8020
8021         * basic-simd.cs: Fix method names for Vector4ui.
8022
8023 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8024
8025         * basic-simd.cs: Fix method names for Vector2l.
8026
8027 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8028
8029         * basic-simd.cs: Fix method names for Vector2d.
8030
8031 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8032
8033         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
8034         that are extension methods.
8035
8036 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8037
8038         * basic-simd.cs: Fix method names for Vector4f.
8039
8040 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
8041
8042         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
8043         as such. Fixes #456669.
8044
8045 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
8046
8047         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
8048         
8049 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
8050
8051         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
8052         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
8053         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
8054         (mips_adjust_stackframe): handle FP spills
8055                 
8056         * mini-ops.h: add mips_mtc1_s2
8057         
8058         * cpu-mips.md: add mips_mtc1_s2
8059         
8060 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
8061
8062         * unwind.c: New file, move the unwind info encoding functions here from
8063         aot-compiler.c, so they could be used at runtime too.
8064
8065 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
8066
8067         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
8068         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
8069         
8070 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
8071
8072         * mini-mips.c: cleanup warnings
8073         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
8074         (mips_adjust_stackframe): handle case of taking the address of stack locals
8075         
8076 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8077
8078         * aot-compiler.c: Implement a few functions missing from the asm writer.
8079         (emit_method_code): Only write symbols for methods when using the bin
8080         writer, since the assembler can't deal with the characters in our method
8081         names.
8082
8083         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
8084
8085         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
8086         call.
8087
8088         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
8089         a bit to also restore %rax.
8090
8091 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8092
8093         * mini-ppc.c: Some simple merges from mini-ppc64.c.
8094
8095 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8096
8097         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
8098         arguments.
8099
8100 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8101
8102         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
8103
8104         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
8105         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
8106
8107         * exceptions-ppc64.c: Removed.
8108
8109         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
8110
8111 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8112
8113         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
8114         tramp-ppc64.c.
8115
8116         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
8117
8118         * tramp-ppc64.c: Removed.
8119
8120 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8121
8122         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
8123         the TYPESPEC table.
8124
8125 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8126
8127         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
8128
8129         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
8130         mini-ppc.h instead of mini-ppc64.h.
8131
8132         * mini-ppc64.h: Removed.
8133
8134 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8135
8136         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
8137         
8138         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
8139         
8140 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8141
8142         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
8143         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
8144         code easier.
8145
8146 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8147
8148         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
8149
8150 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8151
8152         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
8153
8154 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8155
8156         * basic-simd.cs: Tests for operator == and != on Vector4f.
8157
8158 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8159
8160         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
8161
8162         * simd-intrinsics.c: Kill useless enum.
8163
8164 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8165
8166         * cpu-mips.md: add long_conv_to_ovf_i4_2
8167         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
8168
8169 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8170
8171         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
8172         
8173         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
8174
8175 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8176
8177         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
8178         
8179 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8180
8181         * basic-simd.cs: Add tests for new methods.
8182
8183 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8184
8185         * simd-intrinsics.c: Add support for operator == and !=
8186         on Vector4(u)i.
8187
8188         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
8189
8190 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8191
8192         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
8193
8194 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
8195
8196         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
8197
8198         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
8199         MONO_PATCH_INFO_ICALL_ADDR.
8200
8201         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
8202
8203         * aot-compiler.c: Resurrect full-aot support.
8204
8205 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8206
8207         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
8208         
8209 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8210
8211         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
8212         
8213 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8214
8215         * basic-simd.cs: Fix tests to work under ppc.
8216         Remove tests for methods that will be removed.
8217
8218 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8219
8220         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8221         generic type (via a typedef or typeref) correctly.
8222
8223 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8224
8225         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8226         diagnose an assertion failure.
8227
8228 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8229
8230         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8231         Fix trampoline size.
8232
8233         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8234         conversion opcodes are implemented natively instead via emulation.
8235
8236 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8237
8238         * cpu-mips.md: remove mips_xori
8239
8240         * mini-ops.h:  remove mips_xori
8241
8242         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8243
8244         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8245         
8246         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8247         
8248 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8249
8250         * cpu-mips.md: fix instruction lengths.
8251
8252         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8253
8254         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8255
8256         * mini-ops.h: fix slti / sltiu op profiles.
8257         
8258 2008-12-02  Martin Baulig  <martin@ximian.com>
8259
8260         * method-to-ir.c (mono_method_to_ir): Disable debugging
8261         information for the init locals block to make the debugger stop
8262         after all locals have been initalized.
8263
8264 2008-12-02  Martin Baulig  <martin@ximian.com>
8265
8266         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8267         running inside the debugger.
8268
8269 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8270
8271         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8272         is enabled.
8273
8274         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8275         alu->alu imm optimization which only shows if deadce is disabled.
8276
8277         * aot-compiler.c: Rename the function names for the binary and asm writers
8278         so they can coexist in the same process. Rework the xdebug code to use the
8279         asm writer. This avoids the need to call into the runtime to dump the
8280         debugging info. Add more debugging info for types.
8281
8282         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8283
8284         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8285         cpu description tables, they can't occur in cpu-<ARCH>.md.
8286
8287         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8288         the stack in CEE_LDFLDA. Fixes #450542.
8289
8290         * generics.cs: Add a new test.
8291
8292 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8293
8294         * mini-ops.h: updated MIPS opcodes
8295         * mini-mips.c: decompose long opts
8296         * mini-mips.h: decompose long opts
8297         
8298 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8299
8300         * cpu-mips.md: fix length on int_rem_un
8301         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8302         
8303 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8304
8305         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8306
8307         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8308
8309 2008-11-29  Martin Baulig  <martin@ximian.com>
8310
8311         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8312         mono_debug_using_mono_debugger() in addition to the
8313         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8314
8315 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8316
8317         * mini-ops.h: updated more MIPS opcodes
8318         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8319         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8320         
8321 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8322
8323         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8324
8325 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8326
8327         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8328         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8329         * mini-ops.h: correct selected mips opcode entries
8330         
8331 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8332
8333         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8334         make them work.
8335
8336 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8337
8338         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8339
8340 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8341
8342         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8343         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8344         * mini-mips.h: disable IMT
8345         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8346         
8347 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8348
8349         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8350
8351 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8352
8353         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8354
8355 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8356
8357         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8358         consistency.
8359
8360 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8361
8362         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8363         for Set/GetVector aligned versions.
8364
8365 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8366
8367         * basic-simd.cs: Add tests for Get/SetVector.
8368
8369 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8370
8371         * mini.c: Removed g_slist_append_mempool().  Now in
8372         metadata/mempool.c.
8373
8374 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8375
8376         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8377         size properly and make the bounds check optional.
8378
8379         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8380         for SetVector and IsAligned.
8381
8382 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8383
8384         * mini.c: Remove unused mono_normalize_opcodes () function.
8385
8386 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8387
8388         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8389         using the new atomic add ops now.
8390
8391         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8392         add.
8393
8394 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8395
8396         * mini-ppc64.c: Several fixes.
8397
8398 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8399
8400         * cpu-mips.md: added jump_table
8401         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8402
8403 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8404
8405         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8406
8407 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8408
8409         * mini-ops.h: corrected a handful of MIPS opcodes.
8410
8411 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8412
8413         * aot-compiler.c: MIPS to use ELF writer
8414
8415 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8416
8417         * mini-codegen.c: remove MIPS specific assert.
8418
8419 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8420
8421         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8422         fixes.  PPC64 now passes most of the runtime regressions.
8423
8424 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8425
8426         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8427         volatile intervals a bit.
8428
8429 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8430
8431         * basic-long.cs: New test case.
8432
8433 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8434
8435         * mini.c (mini_method_compile): Disable globalra for large methods for 
8436         now.
8437
8438         * regalloc2.c (order_moves): Add fp support.
8439
8440         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8441         source bblock ends with an OP_BR_REG.
8442
8443         * ratests.cs: Add a new test.
8444
8445 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8446
8447         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8448         sharing.  PPC64 now passes generics.exe.
8449
8450 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8451
8452         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8453
8454 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8455
8456         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8457         memory when mono_jit_info_table_find () can't find the method in the
8458         LMF case.
8459
8460         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8461         AOTed code too.
8462         
8463         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8464         writer too.
8465
8466 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8467
8468         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8469         Several fixes.  PPC64 now runs exceptions.exe and
8470         devirtualization.exe.
8471
8472 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8473
8474         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8475         arrays.exe and basic-math.exe.
8476
8477 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8478
8479         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8480         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8481
8482 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8483
8484         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8485
8486 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8487
8488         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8489
8490         * ir-emit.h: Move macros from method-to-ir.c to here.
8491
8492 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8493
8494         * mini-ops.h: Correct the long simd ops to use LREG.
8495
8496 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8497
8498         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8499         
8500         * mini-ops.h: Correct the dreg type of a few long opcodes.
8501
8502         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8503         Add netbsd support.
8504
8505 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8506
8507         * mini-ppc.c: remove negative stack references in epilog
8508         for platforms that don't support the red zone.
8509
8510 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8511
8512         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8513         point regs.  Now PPC64 passes basic-calls.exe.
8514
8515 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8516
8517         * basic-simd.cs: Add tests for accessors of Vector2l.
8518
8519 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8520
8521         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8522
8523         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8524         
8525         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8526
8527 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8528
8529         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8530         PPC64 passes basic-long.exe.
8531
8532 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8533
8534         * decompose.c: Decompose carry and overflow add on PPC64 like on
8535         other 64 bit archs.  Don't decompose sub at all on PPC64.
8536
8537         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8538         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8539         basic-long.exe.
8540
8541 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8542
8543         * basic-simd.cs: Add tests for accessors of Vector2d.
8544
8545 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8546
8547         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8548
8549         * cpu-x86.md: Same.
8550
8551         * mini-x86.c (mono_arch_output_basic_block): Same.
8552         
8553         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8554
8555 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8556
8557         * basic-simd.cs: Add tests for accessors of Vector4f.
8558
8559 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8560
8561         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8562
8563         * cpu-x86.md: Same.
8564
8565         * mini-x86.c (mono_arch_output_basic_block): Same.
8566         
8567         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8568
8569 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8570
8571         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8572
8573 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8574
8575         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8576
8577         * cpu-x86.md: Same.
8578
8579         * mini-x86.c (mono_arch_output_basic_block): Same.
8580         
8581         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8582
8583 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8584
8585         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8586
8587 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8588
8589         * simd-intrinsics.c: Enable setters for Vector16sb.
8590
8591 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8592
8593         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8594
8595         * cpu-x86.md: Same.
8596
8597         * mini-x86.c (mono_arch_output_basic_block): Same.
8598         
8599         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8600
8601 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8602
8603         * simd-intrinsics.c: Implement setter for Vector8us.
8604
8605 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8606
8607         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8608         for dead variables.
8609
8610 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8611
8612         * mini-ppc.c: remove references to the red zone in the prolog
8613         (for systems that don't support it).
8614
8615 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8616
8617         * cpu-ppc64.md: Fixed a few instruction lengths.
8618
8619         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8620         now.
8621
8622 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8623
8624         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8625         basic.exe now.
8626
8627 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8628
8629         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8630
8631 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8632
8633         * mini-ops.h: Added OP_INSERT_I2.
8634
8635         * cpu-x86.md: Same.
8636
8637         * mini-x86.c (mono_arch_output_basic_block): Same.
8638         
8639         * simd-intrinsics.c: Implement setter for Vector8s.
8640
8641         * simd-methods.h: Add the names of get setters of Vector8s.
8642
8643 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8644
8645         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8646         
8647         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8648         parameters.
8649
8650         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8651
8652 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8653
8654         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8655         for PPC64.  An empty program runs now.
8656
8657 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8658
8659         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8660
8661         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8662         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8663         info for JITted code is emitted into a shared library, loadable into gdb.
8664
8665 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8666
8667         * Makefile.am: Changes to build PPC64.
8668
8669         * mini-arch.h: Include mini-ppc64.h on PPC64.
8670
8671 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8672
8673         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8674         in PPC code up to r119147.
8675
8676 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8677
8678         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8679         cpu-ppc64.md: Changes for PPC64.
8680
8681         Based on code submitted by andreas.faerber@web.de at
8682         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8683         X11/MIT license.
8684
8685 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8686
8687         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8688         cpu-ppc64.md: Copied from the corresponding PPC files from
8689         r118846.
8690
8691 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8692
8693         * mini-ops.h: Added OP_ROUND.
8694
8695         * cpu-x86.md: Added round.
8696
8697         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8698
8699         * basic-math.cs: Added test_0_round to test rounding.
8700
8701         Contributed under MIT/X11 license.
8702
8703 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8704
8705         * aot-compiler.c : Fix the Winx64 build.
8706
8707         Contributed under MIT/X11 license.
8708
8709 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8710
8711         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8712         in OP_EXTRACT_R8 to avoid possible stack corruption.
8713
8714 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8715
8716         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8717
8718         * cpu-x86.md: Added extract_r8.
8719
8720         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8721         
8722         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8723         a couple of OP_EXTRACT_I4.
8724
8725         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8726
8727         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8728
8729 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8730
8731         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8732         and not 4.1. 
8733
8734 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8735
8736         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8737         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8738
8739         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8740         are not needed any more.
8741
8742         * mini.h: Remove the unused INS_LIST macros.
8743
8744         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8745         longer needed.
8746
8747         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8748         ir-emit.h.
8749
8750         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8751         mono_alloc_ireg () instead.
8752
8753         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8754         macros.
8755
8756         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8757         on amd64.
8758
8759         * aot-runtime.c (load_aot_module): Disable AOT when running under
8760         CAS.
8761
8762         * mini-amd64.h: Change the monitor fastpath defines to check for
8763         !PLATFORM_WIN32 so they work on *bsd too.
8764
8765         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8766
8767         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8768
8769         * mini.h (MonoCompile): Remove new_ir flag.
8770
8771         * regalloc.h regalloc.c: Remove unused code.
8772
8773         * cpu-*.md: Remove more unused opcodes.
8774
8775         * simple-cee-ops.h simple-mini-ops.h: Removed.
8776
8777         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8778         
8779 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8780
8781         * aliasing.h: Removed.
8782
8783         * *.c: Remove references to aliasing.h and inssel.h.
8784
8785         * mini.c: Remove additional unused functions.
8786
8787         * mini-ops.h cpu-*.md: Remove unused opcodes.
8788
8789 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8790
8791         Remove the old JIT code.
8792
8793         * inssel*.brg: Removed.
8794
8795         * ssa.c abcremoval.c aliasing.c: Removed.
8796
8797         * ssa2.c: Renamed to ssa.c.
8798
8799         * abcremoval2.c: Renamed to abcremoval.c.
8800
8801         * *.c: Removed all !cfg->new_ir code.
8802
8803         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8804         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8805
8806         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8807         
8808 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8809
8810         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8811         to simplify the code and cut back on the number of global symbols in the AOT
8812         file.
8813         
8814         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8815
8816 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8817
8818         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8819         with the got/got_info tables.
8820
8821         * mini.h: Bump AOT file format version.
8822         
8823         * unwind.h: New file, contains definitions for stack unwinding.
8824
8825         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8826         to cfg->unwind_ops.
8827         
8828         * aot-compiler.c: Generalize the emitting of unwind information to use the
8829         information in cfg->unwind_ops.
8830
8831         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8832
8833         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8834         AOT method frames. Enable writing symbols for methods by default.
8835
8836 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8837
8838         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8839         and make it work with vectors of element sizes 1, 2 and 4.
8840
8841         * simd-intrinsics.c: Enable getter for all vectors with element size
8842         1, 2 or 4.
8843
8844         * simd-methods.h: Add the names of other getters.
8845
8846         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8847
8848         * cpu-x86.md: Same.
8849
8850         * mini-x86.c: Same.
8851
8852 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8853
8854         * mini-ppc.h: portability fix.
8855
8856 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8857
8858         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8859         buggy and will overwrite it.
8860
8861 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8862
8863         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8864         Use it to emit local symbols for all methods so AOTed methods show up with
8865         their full name in gdb/valgrind output.
8866
8867 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8868
8869         * mini-ppc.c: portability fixes.
8870
8871 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8872
8873         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8874         entries out of the if (!generic_shared...) code so it is always done.
8875         (mono_class_init_trampoline): Do the patching when running under valgrind
8876         too, newer versions of valgrind have no problems with it.
8877
8878 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8879
8880         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8881         further sections.
8882
8883 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8884
8885         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8886         filters.
8887
8888 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8889
8890         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8891
8892 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8893
8894         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8895
8896         * cpu-x86.md: Same.
8897
8898         * mini-x86.c: Same.
8899
8900         * simd-intrinsics.c: Same.
8901
8902 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8903
8904         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8905
8906 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8907
8908         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8909         to work with more Vector types.
8910
8911 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8912
8913         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8914         store the elemens directly instead of using and intermediate.
8915
8916 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8917
8918         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8919
8920         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8921         to preserve %eax for aot plt trampolines.
8922
8923         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8924         (encode_method_ref): Flag synchronized methods so they won't go through
8925         the AOT trampoline.
8926
8927         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8928         wrappers.
8929
8930         * cpu-ia64.md (jmp): Increase max length.
8931
8932 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8933
8934         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8935         open generic classes.
8936
8937         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8938
8939         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8940         box+brtrue optimization since it causes test failures on x86.
8941
8942 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8943
8944         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8945
8946         * cpu-x86.md: Same.
8947
8948         * mini-x86.c: Same.
8949
8950         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8951         for simd ctor values. 
8952
8953         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8954         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8955
8956 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8957
8958         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8959         LogicalRightShift.
8960
8961         * simd-instrincs.c: Same.
8962
8963         * basic-simd.cs: Same.
8964
8965 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8966
8967         * ratests.cs: Add more tests.
8968
8969         * regalloc2.c (add_spill_code): Handle more corner cases.
8970
8971 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8972
8973         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8974         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8975         both the source an destination of an instruction.
8976
8977 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8978
8979         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8980         wapihandles.c: more portability changes.
8981
8982 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8983
8984         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8985         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8986         safe to execute in a signal handler and the kernel provides better
8987         the info in /proc/self/smaps. Avoid the assert on sigaction during
8988         cleanup.
8989
8990 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8991
8992         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8993         do the bblock linking hack if it is actually needed.
8994
8995         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8996         up linking.
8997
8998         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8999         crash problem is fixed.
9000
9001         * branch-opts.c (mono_remove_critical_edges): Link up newly added
9002         bblocks.
9003
9004         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
9005         for catch clauses.
9006         (mini_method_compile): Set the starting value of next_vreg to 
9007         MAX_IREGS + MAX_FREGS when using globalra.
9008
9009         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
9010         filter clauses with BB_EXCEPTION_HANDLER.
9011
9012         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
9013
9014 2008-11-10  Mark Probst  <mark.probst@gmail.com>
9015
9016         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
9017         space for stdcall.  Fixes regressions on Win32.
9018
9019 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
9020
9021         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
9022         bblocks.
9023         (linear_scan): Remove an assert which doesn't seem to be needed.
9024
9025         * local-propagation.c (mono_local_deadce): Avoid a call to
9026         MONO_DELETE_INS which would screw up the instruction linking.
9027
9028         * mini.c (mono_decompose_op_imm): Make this work with globalra.
9029
9030         * regalloc2.c: Upgrade to work the current JIT code.
9031
9032 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
9033
9034         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
9035         case.
9036
9037         * aot-runtime.c: Remove some dead code.
9038
9039         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
9040         consistency.
9041         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
9042
9043         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
9044         trampolines using sscanf since atoi doesn't work on large unsigned values.
9045
9046         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
9047         Initialize code_size.
9048
9049 2008-11-08  Mark Probst  <mark.probst@gmail.com>
9050
9051         * method-to-ir.c (mini_emit_inst_for_method): Make
9052         Interlocked.CompareExchange work for Int arguments on 32 bit
9053         archs, as well.
9054
9055 2008-11-07  Mark Probst  <mark.probst@gmail.com>
9056
9057         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
9058
9059 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
9060
9061         * main.c Fix MSVC build.
9062
9063         Contributed under MIT/X11 license.
9064
9065 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9066
9067         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
9068         alignment larger than 8 bytes are aligned correctly, too.
9069
9070         * mini.c: Honor the min_align field of MonoClass when laying out
9071         the stack.
9072
9073 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
9074
9075         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
9076
9077         * aot-compiler.c (emit_plt): Fix a warning.
9078         
9079         * aot-compiler.c: Implement ARM support in the binary writer.
9080
9081 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9082
9083         * basic-simd.cs: Add test for getter with byref arg.
9084         Fix the naming of a few tests.
9085         Add missing checks to a test.
9086
9087 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
9088
9089         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
9090
9091         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
9092         most of the full-aot support for monitor enter/exit trampolines.
9093
9094         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
9095         enter/exit trampoline creation functions.
9096
9097         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
9098         make dist.
9099
9100 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
9101
9102         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
9103         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
9104         implement the needed functionality without adding crap to the runtime.
9105
9106 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
9107
9108         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
9109         non-x86 builds.
9110
9111         * mini.c (mono_build_date): New global version holding the build date in
9112         string format.
9113         
9114         * Makefile.am (buildver.c): Generate a file containing the build date.
9115
9116         * main.c: Set the build date from the generated file.
9117
9118         * mini.c (mono_get_runtime_build_info): New helper function returning build
9119         information in a string format.
9120         
9121         * driver.c (mono_main): Print the build date in --version.
9122
9123         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
9124         file when the bind-to-runtime-version option is used.
9125
9126 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9127
9128         * simd-intrinsics.c: Fix bug when using getters and byref args. 
9129
9130 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9131
9132         * simd-methods.h: Rename prefetch methods.
9133
9134         * simd-intrinsics.c: Same.      
9135
9136 2008-11-05  Mark Probst  <mark.probst@gmail.com>
9137
9138         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
9139         sizes.
9140
9141 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9142
9143         * aot-compiler.c: Use the bundled elf header files instead of depending on
9144         the system one.
9145         
9146         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
9147         mempool.
9148
9149         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
9150         on every call.
9151
9152 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
9153
9154         * cpu-x86.md: Add store nta ops.
9155
9156         * mini-ops.h: Same.
9157
9158         * mini-x86.c: Same.
9159
9160         * mini.h: Add an enum for simd prefetch modes.
9161
9162         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
9163         of store. Use the changed code to support store nta.
9164
9165         * simd-intrinsics.c: Add prefetch ops for all vector types.
9166
9167 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9168
9169         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
9170         threads.
9171         
9172         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
9173         names.
9174
9175         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
9176         trampolines.
9177
9178 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9179
9180         * mini-x86.c: Fixed commit.
9181
9182 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9183
9184         * aot-compiler.c (emit_plt): Align the plt section only on x86.
9185
9186 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9187
9188         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
9189         and MONITOR_EXIT, for the ASM fastpaths.
9190
9191         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
9192         available.
9193
9194         * mini.c, patch-info.h: Signature and patch infos for
9195         Monitor.Enter/Exit trampolines.
9196
9197         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
9198
9199         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
9200         Monitor.Enter/Exit ASM fastpath for Linux.
9201
9202 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9203
9204         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
9205
9206         * objects.cs: Add a new test.
9207         
9208         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
9209
9210         * aot-runtime.c (load_method): Run class initialization in the PLT case even
9211         if MONO_LOG_LEVEL is set.
9212
9213         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9214
9215         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9216
9217         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9218         
9219         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9220         of file offsets. Align the sections belonging to the data segment to 
9221         PAGESIZE.
9222
9223 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9224
9225         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9226         elf.h. Port it to amd64.
9227
9228 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9229
9230         * driver.c: Enable SIMD by default.
9231
9232 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9233
9234         * cpu-x86.md: Add prefetch op.
9235
9236         * mini-ops.h: Same.
9237
9238         * mini-x86.c: Same.
9239
9240         * mini.h: Add an enum for simd prefetch modes.
9241
9242         * simd-methods.h: Add prefetch function names.
9243
9244         * simd-intrinsics.c: Add prefetch ops for all vector types.
9245
9246 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9247
9248         * aot-compiler.c (emit_bytes): Speed this up a little.
9249
9250 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9251
9252         * aot-compiler.c: Add JIT time etc. statistics.
9253         
9254         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9255
9256         * mini.h (MonoCompile): Add 'got_offset' field.
9257
9258         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9259         method_got_offsets array.
9260
9261         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9262         wrappers.
9263
9264         * aot-compiler.c (compile_method): Add generic method instances referenced
9265         by the method to the list of methods to be compiled, this is required so if
9266         A<T> references B<T>, and another assembly references A<int>, then it will
9267         also get a copy of B<int>.
9268
9269         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9270         when checking for monitor enter/exit.
9271
9272 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9273
9274         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9275         for Monitor.Enter and Monitor.Exit if enabled.
9276
9277         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9278         Solaris.
9279
9280 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9281
9282         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9283         of an OP_MOVE. Fixes #440046.
9284
9285         * basic-long.cs: Add a new test.
9286
9287 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9288
9289         * mini.h: Add synchronization note for the managed counter-part.
9290
9291         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9292         returns the simd caps of the current cpu.
9293
9294 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9295
9296         * basic-simd.cs: Remove Console.WriteLine.
9297
9298 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9299
9300         * basic-simd.cs: New tests for Vector2ul.
9301
9302 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9303
9304         * simd-intrinsics.c: Add new vector type Vector2ul.
9305
9306 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9307
9308         * basic-simd.cs: New tests for Vector2l.
9309
9310 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9311
9312         * cpu-x86.md: Add long version of most packed int ops.
9313
9314         * mini-ops.h: Same.
9315
9316         * mini-x86.h: Same.
9317
9318         * simd-intrinsics.c: Add new vector type Vector2l.
9319
9320 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9321
9322         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9323
9324         * simd-methods.h: Remove SN_op_BitwiseXor.
9325
9326 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9327
9328         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9329         alignment.
9330
9331 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9332
9333         * basic-simd.cs: Test for Vector2d.
9334
9335         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9336         value.
9337
9338 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9339
9340         * cpu-x86.md: Add double version of all packed float ops.
9341
9342         * mini-ops.h: Same.
9343
9344         * mini-x86.h: Same.
9345
9346         * simd-intrinsics.c: Add new vector type Vector2d.
9347
9348         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9349
9350         * simd-methods.h: Add Duplicate.
9351
9352 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9353
9354         * basic-simd.cs: Test for packing with signed saturation.
9355
9356 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9357
9358         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9359         found in the TYPESPEC table.
9360
9361 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9362
9363         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9364         too.
9365
9366         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9367
9368         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9369         instead of the RVA, since the RVA can be changed by tools like the cil 
9370         stripper.
9371
9372         * method-to-ir.c (mono_method_to_ir2): Ditto.
9373
9374         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9375         (deserialize_variable): Ditto.
9376
9377 2008-10-25  Martin Baulig  <martin@ximian.com>
9378
9379         * debug-mini.c (write_variable): Use
9380         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9381
9382 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9383
9384         * cpu-x86.md: Add unsigned variants of packd and packw.
9385
9386         * mini-ops.h: Same.
9387
9388         * mini-x86.h: Emit the right instruction for packd and packw.
9389         Add unsigned variants of packd and packw.
9390
9391         * simd-intrinsics.c: Packd and packw were used in place of their
9392         unsigned variants. Change that.
9393         Add intrinsics for (Signed)PackWithSignedSaturation.
9394
9395         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9396
9397 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9398
9399         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9400
9401 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9402
9403         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9404
9405         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9406
9407         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9408         sse instructions.
9409
9410         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9411
9412 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9413
9414         * method-to-ir.c, mini.c: Special casing for the synchronized
9415         wrapper for the ldtoken+GetTypeFromHandle case.
9416
9417 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9418
9419         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9420
9421         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9422         created/split bblocks.
9423
9424 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9425
9426         * mini-ops.h: Add packed signed mul high.
9427         
9428         * cpu-x86.md: Same.
9429
9430         * mini-x86.c (mono_arch_output_basic_block): Same.
9431
9432         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9433
9434         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9435
9436 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9437
9438         * basic-simd.cs: Tests for Vector16sb.
9439
9440 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9441
9442         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9443
9444 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9445
9446         * mini-ops.h: Add packed signed min, max and compare greater.
9447         
9448         * cpu-x86.md: Same.
9449
9450         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9451         saturation.
9452
9453         * simd-methods.h: Add CompareGreaterThan.
9454
9455         * simd-methods.h: Remove CompareEquals.
9456
9457         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9458
9459         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9460
9461         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9462         CompareEqual.
9463
9464 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9465
9466         * basic-simd.cs: Fix tests due to change in the API.
9467
9468 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9469
9470         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9471
9472 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9473
9474         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9475
9476         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9477         inst_offset as this has invalid values for LDADDR.
9478
9479 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9480
9481         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9482
9483         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9484
9485 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9486
9487         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9488         for accessing field->data.
9489
9490 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9491
9492         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9493
9494 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9495
9496         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9497
9498         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9499
9500 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9501
9502         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9503         from the cfg mempool.
9504
9505 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9506
9507         * basic-simd.cs: Tests for new methods in Vector8us.
9508
9509 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9510
9511         * mini-ops.h: Add multiply and store high.
9512         
9513         * cpu-x86.md: Same.
9514
9515         * mini-x86.c (mono_arch_output_basic_block): Same.
9516
9517         * simd-methods.h: Same.
9518
9519         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9520         and CompareEqual.
9521
9522 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9523
9524         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9525         mono_class_setup_vtable ().
9526
9527         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9528         mono_class_get_vtable_entry () for accessing klass->vtable.
9529
9530         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9531
9532         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9533         found.
9534
9535         * method-to-ir.c (mono_save_token_info): Don't save references made from
9536         wrappers.
9537
9538         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9539         of generic instances.
9540
9541         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9542
9543 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9544
9545         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9546         OP_JMP depends on the method signature.  Calculate it properly.
9547
9548 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9549         
9550         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9551         called directly.
9552
9553         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9554         instances.
9555         (emit_extra_methods): Add another table mapping method indexes to 
9556         offsets in the extra_method_info table.
9557
9558         * mini.h: Bump AOT file format version.
9559         
9560         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9561         and mono_aot_get_method_from_token () into one function.
9562
9563 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9564
9565         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9566         separate counter.
9567
9568 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9569
9570         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9571         methods.
9572
9573         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9574         disable_aot.
9575
9576         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9577
9578         * mini.h: Bump aot file format version.
9579
9580         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9581         AOT file can contain native code for methods which are not in the METHOD
9582         table. Generate code for non-sharable generic instances of generic methods
9583         found in the METHODSPEC table.
9584         
9585         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9586         encoding generic type handles.
9587
9588         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9589         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9590
9591         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9592         macros + MONO_ADD_INS.
9593
9594         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9595         context as well.
9596
9597         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9598
9599         * mini.h: Bump aot file format version.
9600
9601         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9602
9603 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9604
9605         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9606         platforms, with definable stack alignment value.  Set to 16 now
9607         for all platforms.
9608
9609         * mini.c, mini.h, driver.c: Command line option for disabling
9610         stack alignment.
9611
9612 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9613
9614         * basic-simd.cs: Tests for new methods in Vector4ui.
9615
9616 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9617
9618         * mini-ops.h: Add packed int shuffle.
9619         
9620         * cpu-x86.md: Same.
9621
9622         * mini-x86.c (mono_arch_output_basic_block): Same.
9623
9624         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9625         extract mask, max, min, shuffle.
9626
9627         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9628
9629 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9630
9631         * basic-simd.cs: Tests for new methods in Vector8us.
9632
9633 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9634
9635         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9636         RuntimeTypeHandle, not a TypedReference.
9637
9638 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9639
9640         * simd-intrinsics.c: remove relocations.
9641
9642 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9643
9644         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9645         optimizations from the x86 backend.
9646
9647 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9648
9649         * simd-methods.h, simd-intrinsics.c: debloat method names and
9650         prepare for no relocations.
9651
9652 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9653
9654         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9655         
9656         * cpu-x86.md: Same.
9657
9658         * mini-x86.c (mono_arch_output_basic_block): Same.
9659
9660         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9661         extract mask, max, min and sum of absolute differences.
9662
9663         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9664         method name.
9665
9666 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9667
9668         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9669         Renamed one test for consistency.
9670
9671 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9672
9673         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9674         fix to the code that deal with other blocks.
9675
9676 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9677
9678         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9679
9680 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9681
9682         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9683         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9684         able to process the source reg.
9685
9686 2008-10-16  Martin Baulig  <martin@ximian.com>
9687
9688         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9689
9690         * inssel.brg: Add `OP_HARD_NOP'.
9691
9692         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9693
9694         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9695         `OP_HARD_NOP' instruction when running inside the debugger.
9696
9697         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9698         `OP_HARD_NOP' instruction when running inside the debugger.
9699
9700 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9701
9702         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9703         now works. The issue with the regalloc tripping up no longer
9704         happens.
9705
9706         * simd-intrinsics.c (load_simd_vreg): Same.
9707
9708 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9709         
9710         * basic-simd.cs: Tests for new Vector8ui methods.
9711
9712 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9713
9714         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9715         only for type. This fixes crashes where MonoInst::klass is checked
9716         for ops of type != VTYPE or OBJ.
9717
9718         * simd-intrinsics.c (load_simd_vreg): Same.
9719
9720 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9721
9722         * mini-ops.h: Add ops for packed shuffle/max/avg and
9723         extract mask.
9724         
9725         * cpu-x86.md: Same.
9726
9727         * mini-x86.c (mono_arch_output_basic_block): Same.
9728
9729         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9730         extract mask.
9731
9732         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9733         to emit extract mask op.
9734
9735         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9736         to emit word shuffles.
9737
9738 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9739
9740         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9741         the largest alignment needed by a variable, but at least
9742         sizeof(gpointer).
9743
9744 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9745
9746         * basic-simd.cs: Tests for the fixes in the last commit.
9747
9748 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9749
9750         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9751         no longer handles STACK_PTR input.
9752
9753         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9754
9755         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9756         get_simd_vreg   but handles STACK_PTR input.
9757
9758         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9759         as the input can be an arbitrary pointer.
9760
9761         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9762         LDADDR local optimization directly otherwise use a store op.
9763
9764 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9765
9766         * basic-simd.cs: Tests for dup low and dup high.
9767
9768 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9769
9770         * mini-ops.h: Add dup low and dup high ops.
9771         
9772         * cpu-x86.md: Same.
9773
9774         * mini-x86.c (mono_arch_output_basic_block): Same.
9775
9776         * simd-intrinsics.c (vector4f_intrinsics): Same.
9777
9778 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9779
9780         * basic-simd.cs: Tests for recently added functionality.
9781
9782 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9783
9784         * mini-ops.h: Add remaining sse1 fp ops.
9785         
9786         * cpu-x86.md: Add remaining sse1 fp ops.
9787
9788         * mini-x86.c (mono_arch_output_basic_block): Same.
9789
9790         * mini.h: Add enum for simd FP compare conditions.
9791
9792         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9793
9794         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9795         so the backed can generate the appropriate op.
9796
9797 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9798         This patch squeese one more byte from the SimdIntrinsc struct.
9799
9800         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9801         a a shift amount intead of simply or'ing it.
9802
9803         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9804
9805         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9806         byte so we can have an aditional flags field without increasing struct size.
9807
9808         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9809         against the simd_supported_versions bitmask.
9810
9811         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9812
9813 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9814
9815         * mini.c: remove rawbuffer code (the only use here is unsafe because
9816         it takes locks during signal handling and the kernel now provides much
9817         better info in proc/pid/smaps these days).
9818
9819 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9820
9821         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9822         OP_X86_PUSH_OBJ. Fixes #434620.
9823
9824         * objects.cs: Add a test.
9825         
9826 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9827
9828         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9829         that the packuswb/packusdw don't work with unsigned numbers for what
9830         would be negative numbers in signed format.
9831
9832         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9833         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9834
9835         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9836
9837         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9838
9839         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9840
9841         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9842
9843         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9844         add more ops.
9845
9846         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9847         version as the enum in mini.h.
9848
9849         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9850         for sse3 ops, check the simd_version field if present. This way the code
9851         works with all versions of sse.
9852
9853 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9854
9855         * simd-intrinsics.c: Fixed intrinsic name typo.
9856
9857         * mini.h: Added missing simd exported function.
9858
9859         * basic-simd.cs: Added tests for Vector4ui.
9860         Fixed broken test for Vector16b.
9861
9862 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9863
9864         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9865         the max length to 64.
9866
9867 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9868
9869         * method-to-ir.c: Only do the fast virtual generic method call for
9870         non-wrapper methods.
9871
9872         * mini.h, mini-trampolines.c: The new generic virtual remoting
9873         trampoline handles virtual method calls via the vtable (as done by
9874         the fast virtual generic method calls) to remoting proxies.
9875
9876         * mini.c (mono_jit_create_remoting_trampoline): For generic
9877         methods reate a generic virtual remoting trampoline.
9878
9879         * mini-amd64.h: Enable fast virtual generic method calls again.
9880
9881 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9882
9883         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9884         restore registers when doing tail calls.
9885
9886 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9887
9888         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9889         Vector4ui.
9890
9891 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9892
9893         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9894
9895 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9896
9897         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9898
9899 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9900
9901         * basic-simd.cs: Retrofit for API changes.
9902
9903 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9904
9905         * mini-ppc.c: Handle integer stack arguments for tail calls.
9906
9907 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9908
9909         * optflags-def.h: Removed sse3 optimization.
9910
9911         * driver.c: Same.
9912
9913         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9914         sse3.
9915
9916         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9917
9918         * mini.h: Added enumeration with simd versions.
9919
9920         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9921         for detecting SSE3.
9922
9923         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9924
9925         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9926
9927 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9928
9929         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9930
9931         * basic-simd.cs: Fixed test naming.
9932
9933 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9934
9935         * mini-ops.h: Added ops for packed and saturated math, shifts
9936         and packing/unpacking.
9937
9938         * cpu-x86.md: Added descriptors for the above ops.
9939
9940         * mini-x86.c: Added code to emmit the above ops.
9941
9942         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9943
9944 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9945
9946         * aot-compiler.c (compile_method): Enable AOT for generic code.
9947
9948         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9949
9950 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9951
9952         * mini.c: add a workaround for a common screwup that ends up blamed
9953         to mono (other processes blocking signal delivery).
9954
9955 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9956
9957         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9958         in the LDFLD/STFLD opcodes. Fixes #432673.
9959
9960         * iltests.il.in: Add a new test.
9961
9962 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9963
9964         * mini-arm.c: attach the thread in unmanaged->managed transitions
9965         using delegates (bug #433148).
9966
9967 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9968
9969        * basic-simd.cs: Use new ShuffleSel constants.
9970
9971 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9972
9973         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9974
9975         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9976         only disable simd intrinsics if no sse2 is detected.
9977
9978         * optflags-def.h: Added sse3.
9979
9980         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9981         is disabled.
9982
9983 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9984
9985         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9986         when adding delegate-invoke wrappers.
9987
9988 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9989
9990         * Makefile.am: Reenable the simd tests.
9991
9992 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9993
9994         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9995           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9996           other vreg is allocated to that hreg.
9997
9998         Contributed under MIT/X11 license.
9999
10000 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
10001
10002         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
10003         yet checked in.
10004
10005 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
10006
10007         * basic-simd.cs: New test suite for SIMD intrinsics.
10008
10009         * Makefile.am: Added new tests.
10010
10011 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
10012
10013         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
10014
10015         * mini-ops.h: Same.
10016
10017         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
10018
10019         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
10020         using SSE2 aware opcodes.
10021
10022         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
10023         is enabled, this code path is only reachable if conversion ops are emmited after
10024         mono_method_to_ir.
10025
10026         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
10027
10028         This optimization saves 6 bytes per conversion against the old version.
10029
10030 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10031
10032         * aot-compiler.c (compile_method): Don't skip methods referencing 
10033         generic methods without a corresponding entry in token_info_hash, since
10034         encode_method_ref () can handle all generic methods now.
10035
10036         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
10037         generic context is set.
10038         
10039         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
10040         generic sharing of LDTOKEN.
10041
10042 2008-10-06  Mark Probst  <mark.probst@gmail.com>
10043
10044         * mini-amd64.h: Temporarily disabled fast virtual generic method
10045         calls because it breaks the System.Runtime.Remoting tests.
10046
10047 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10048
10049         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
10050
10051         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
10052         so inlining actually works.
10053         (check_inline_caller_method_name_limit): Ditto.
10054
10055 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
10056
10057         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
10058         64 bit safety (from Olaf Hering and Andreas Farber).
10059
10060 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10061         
10062         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
10063         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
10064         unused virtual call support code.
10065
10066         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
10067         
10068         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
10069         which can't use aot trampolines.
10070         (decode_patch): Don't create aot trampolines for methods which can't use
10071         them.
10072
10073         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
10074         use aot trampolines.
10075
10076         * mini.h: Bump AOT image format version.
10077         
10078 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
10079
10080         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
10081         to save_token_info () since cmethod is inflated for constrained calls.
10082
10083         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
10084
10085 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
10086
10087         * Makefile.am: Add build rules for ppc64.
10088         This avoids the build failing at pedump with unresolved symbols
10089         due to lack of arch_sources. Instead it will now fail earlier
10090         due to lack of cpu-ppc64.md.
10091
10092         Contributed under MIT/X11 license.
10093
10094 2008-10-04  Mark Probst  <mark.probst@gmail.com>
10095
10096         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
10097         tail calls.
10098
10099         * iltests.il.in: Add test case for tail call with many arguments.
10100
10101 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10102
10103         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
10104         to the fast virtual generic method code until the aot case is fixed.
10105
10106 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10107
10108         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
10109
10110 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10111
10112         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
10113         thunks.
10114
10115 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10116         
10117         * simd-intrinsics.c: Forgot to add this one.
10118
10119         * mini-codegen.c: Fix macro in case SIMD is not supported.
10120
10121 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10122         
10123         This patch land initial JIT support for simd intrinsics.
10124
10125         * mini-x86.h: Added new define to make --enable_minimal work on x86.
10126
10127         * Makefile.am: Added simd-intrinsics.c
10128
10129         * simd-intrinsics.c: New file with simd instrinsic related
10130         code.
10131
10132         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
10133
10134         * cpu-x86.md: Add simd related instructions.
10135
10136         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
10137
10138         * driver.c: Added two new --regression variants.
10139
10140         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
10141
10142         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
10143
10144         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
10145         extract some complicated logic to helper functions.
10146
10147         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
10148
10149         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
10150
10151         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
10152         the specialized simplification pass.
10153
10154         * method-to-ir.c (mono_spill_global_vars): Use new macro.
10155
10156         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
10157
10158         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
10159         table.
10160
10161         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
10162         if MONO_ARCH_NEED_SIMD_BANK is defined.
10163
10164         * mini-ops.h: Added the new simd ops.
10165
10166         * mini-x86.c: Added mono_arch_xregname.
10167
10168         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
10169
10170         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
10171
10172         * mini-x86.h: Define simd related MONO_ARCH macros.
10173
10174         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
10175
10176         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
10177
10178         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
10179         MONO_CLASS_IS_SIMD to deal with simd related IR.
10180
10181         * mini.h (MonoInst): Added spill_var to the backend union.
10182
10183         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
10184
10185         * mini.h: Added forward declarations of the new simd fuctions.
10186
10187         * optflags-def.h: Added new optimization names SIMD.
10188
10189         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
10190
10191         * regalloc.h: Added support for working with 3 register banks.
10192
10193         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
10194
10195         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
10196
10197 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
10198
10199         * mini-exceptions.c: remove 64 bit related ifdef clutter.
10200
10201 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10202
10203         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
10204         instead of one on 64 bit systems.
10205
10206         * method-to-ir.c: Remove unused includes.
10207
10208 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
10209
10210         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
10211         cfg->used_int_regs, since the two are different on arm.
10212
10213 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10214
10215         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10216         mono_method_get_vtable_index() to get the vtable index.
10217
10218 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10219
10220         * method-to-ir.c (mono_method_to_ir2): Don't create native
10221         wrappers for array methods, because they're never called (and if
10222         they were called they wouldn't work).
10223
10224 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10225
10226         * method-to-ir.c (mono_method_to_ir2): Array methods are
10227         special-cased and must not be invoked indirectly via the (M)RGCTX
10228         when generic sharing is turned on.  Fixes #431413.
10229
10230 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10231
10232         * method-to-ir.c: When generic sharing is active, call
10233         non-interface virtual generic methods via the standard trampoline.
10234
10235         * mini-trampolines.c: Handle virtual generic shared methods.
10236
10237         * mini.h, mini-x86.c, mini-x86.h: New argument for
10238         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10239         method thunks and which is the trampoline to call if the lookup
10240         fails.  Enable the virtual generic method thunk for x86.
10241
10242         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10243         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10244         argument but assert that it's NULL, because these archs don't yet
10245         implement the virtual generic method thunk.  Changes in the IMT
10246         thunk data structures.
10247
10248 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10249
10250         * aot-compiler.c (emit_globals): Avoid invalid characters in
10251         the static linking symbol.
10252
10253         * objects.cs: Add a test for the range check optimization. Fix warnings.
10254
10255         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10256         optimization from the current JIT.
10257
10258         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10259         later in decompose_array_access_opts () to allow more optimizations.
10260
10261         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10262         mono_decompose_soft_float () for consistency.
10263
10264         * mini-ops.h: Fix arguments of OP_STRLEN.
10265
10266         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10267         into a separate function.
10268         (reset_cast_details): Ditto.
10269         (handle_unbox): Save cast details. Fixes #431254.
10270
10271         * method-to-ir.c: Remove some obsolete FIXMEs.
10272
10273 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10274
10275         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10276
10277 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10278
10279         * mini-codegen.c: More work on macros to make them
10280         ready for multiple regbanks.
10281
10282 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10283
10284         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10285
10286         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10287
10288 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10289
10290         * mini-codegen.c (mono_spillvar_offset): Proper support for
10291         multiple regbanks.
10292
10293 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10294
10295         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10296         the stack overflow changes.
10297
10298 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10299
10300         * mini-codegen.c: Make all bank macros depend on reg_bank.
10301
10302         * mini-codegen.c (mono_local_regalloc): Make free mask
10303         initialization regbank aware.
10304
10305 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10306
10307         * mini-codegen.c (mono_local_regalloc): Extract callee
10308         mask selection to a function and make it regbank aware.
10309
10310 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10311
10312         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10313         code to deal with many regbanks.
10314
10315 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10316
10317         * mini-codegen.c: More fp->regbank changes.
10318
10319 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10320
10321         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10322         of a hardcoded constant.
10323
10324 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10325
10326         * method-to-ir.c (type_from_stack_type): Fix typo.
10327
10328 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10329
10330         * mini-ia64.c (emit_move_return_value): Convert float return values to
10331         double.
10332
10333         * objects.cs: Add a new test.
10334         
10335         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10336         VARARG methods to fix an assert later.
10337
10338         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10339         end so it at least compiles.
10340
10341 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10342
10343         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10344
10345 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10346
10347         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10348         optimization to a new function (emit_optimized_ldloca_ir) and enable
10349         it for both ldloca and ldloca_s.
10350
10351 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10352
10353         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10354         gshared CASTCLASS code.
10355
10356         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10357         amd64, where the libc stack unwinder encounters stack frames referring to
10358         native code in unmapped memory.
10359
10360         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10361         sharing.
10362
10363         * generics.cs: Add new test.
10364
10365 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10366
10367         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10368         add a check that one of the ARM_FPU_ constants is defined.
10369
10370         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10371         
10372         * mini-exceptions.c: Fix build on non-altstack platforms.
10373
10374         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10375         sharing of vtypes.
10376
10377         * ir-emit.h: Add a comment to NEW_PCONST.
10378
10379         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10380
10381         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10382
10383         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10384         after the changes to MonoJitDomainInfo.
10385
10386 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10387
10388         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10389
10390 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10391
10392         * mini-ppc.c: Compiler warning fixes.
10393
10394 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10395
10396         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10397         for pinvokes.
10398
10399 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10400
10401         * exceptions-ppc.c, mini-ppc.h: Compile
10402         mono_arch_handle_altstack_exception() on Darwin, too.
10403
10404 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10405
10406         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10407         work on archs which don't have generic sharing implemented, only
10408         without the vtable_arg.
10409
10410 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10411
10412         * mini.c: Added comment explaining why delegate ctor icall
10413         wrappers are compiled.
10414
10415 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10416
10417         * mini.c: Don't produce trampolines to delegate ctor icall
10418         wrappers but compile them upfront.
10419
10420 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10421
10422         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10423         runtime-set function when going back to managed code. Currently this
10424         is used to set back the protection on the soft ovf pages and/or to
10425         throw the stack overflow exception that happened in unmanaged code.
10426
10427 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10428
10429         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 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:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10435
10436         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10437         the support code for restoring stack protection after stack overflows
10438         that happen in unmanaged code. Don't set the exec permission on the
10439         soft overflow area.
10440
10441 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10442
10443         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10444         delegate->method_ptr is set. Fixes #428054.
10445
10446 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10447
10448         * tests.cs: Rename to ratests.cs.
10449
10450         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10451         emit_get_rgctx_... functions.
10452
10453 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10454
10455         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10456
10457 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10458
10459         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10460         before asserting that method is sharable.
10461
10462 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10463
10464         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10465         whether method needs a static RGCTX wrapper used instead of
10466         complex conditions.
10467
10468         * generic-sharing.c, mini.h: A few functions moved to
10469         metadata/generic-sharing.c.
10470
10471 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10472
10473         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10474         Generic code sharing for value types, which essentially means
10475         treating value type methods like static methods.  The RGCTX is
10476         passed in the same way.
10477
10478 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10479
10480         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10481         opcode when creating multi-dimensional arrays of open types.
10482
10483         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10484         open generic types.
10485
10486         * generics.cs: Add a test.
10487
10488         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10489
10490 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10491
10492         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10493
10494         * mini.c (mini_method_compile): Set it when running under the debugger. 
10495
10496         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10497         vreg optimization if the flag is set.
10498
10499         * driver.c (mono_main): Add --attach= option to pass options to
10500         the attach agent.
10501
10502         * mini.c (sigquit_signal_handler): Start the attach agent.
10503
10504         * ssapre.c: Disable this to save space since it is not yet ported to
10505         linear IR.
10506
10507         * regalloc2.c: Disable this to save space.
10508
10509         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10510
10511 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10512
10513         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10514         the -v option useful again.
10515
10516 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10517
10518         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10519         --break-at-bb.
10520
10521         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10522         arrays of arrays. Fixes #428406.
10523
10524         * method-to-ir.c (mini_emit_castclass): Ditto.
10525
10526         * objects.cs: Add new test.
10527         
10528 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10529
10530         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10531         was wrong at it choked against target_type_is_incompatible for byref types.
10532
10533 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10534
10535         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10536         places.
10537
10538 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10539
10540         * mini-exceptions.c: update a few more exceptions-related counters.
10541
10542 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10543
10544         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10545         new functions to allocate from persistent mempools.
10546
10547 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10548
10549         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10550         multiple register banks in the future.
10551
10552         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10553
10554 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10555
10556         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10557
10558         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10559
10560         * mini.h: Export type_to_eval_stack_type.
10561
10562         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10563         is only ins->klass of byref types.
10564
10565 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10566
10567         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10568         (mini_emit_memcpy2): Ditto.
10569
10570         * mini-amd64.c: Fix a warning.
10571
10572 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10573
10574         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10575         linking.
10576
10577 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10578
10579         * method-to-ir.c: Extract stloc micro-optimization to a
10580         function and apply it to all cases.
10581
10582 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10583
10584         * method-to-ir.c: Don't fail generic code sharing in cases we
10585         already support.
10586
10587 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10588
10589         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10590
10591 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10592
10593         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10594         implementation.
10595
10596 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10597
10598         * trace.c: make tracing more useful and correct, with per-thread
10599         id and indent info.
10600
10601 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10602
10603         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10604         doing a method call and the argument is an R4.
10605
10606 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10607
10608         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10609         generic methods.
10610
10611 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10612
10613         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10614
10615 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10616
10617         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10618         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10619
10620 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10621
10622         * driver.c: Add a --agent argument (not supported yet) to load managed
10623         agent assemblies before loading the main assembly, similarly to how the
10624         Java VM handles agents.
10625
10626 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10627
10628         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10629         function to do stack layout of local variables.
10630
10631 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10632
10633         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10634         calculation.
10635
10636 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10637
10638         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10639         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10640         JIT if DISABLE_JIT is defined.
10641
10642         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10643         defined.
10644
10645 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10646
10647         * iltests.il.in: Disable the fconv test on PPC (the result is
10648         undefined according to ECMA).
10649
10650 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10651
10652         * iltests.il.in: Enable tail call tests for PPC.
10653
10654         * mini.h: Add variable for storing incoming valuetype argument
10655         addresses for tail calls.
10656
10657         * mini-ppc.c: Implement valuetype arguments and return values for
10658         tailcalls on Linux.
10659
10660 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10661
10662         * mini-ppc.c: Partially implement tail calls (struct arguments and
10663         return values not supported).
10664
10665         * method-to-ir.c: Enable tail calls on PPC.
10666
10667 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10668
10669         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10670         runtime-invoke wrappers to work around the problem of them getting
10671         assigned to a random class.
10672
10673         * aot-runtime.c (mono_aot_get_method): Ditto.
10674         
10675 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10676
10677         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10678         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10679
10680 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10681
10682         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10683         until they're implemented properly.
10684
10685         * exceptions-ppc.c: Use arch-independent exception-handling code
10686         instead of custom one.
10687
10688         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10689         for Linear IR.
10690
10691         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10692
10693         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10694         applies when __powerpc__ is defined.
10695
10696 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10697
10698         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10699         methods to their code to avoid computing the full name of wrappers and
10700         doing a lookup in a string hash table.
10701
10702 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10703
10704         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10705         we identify bblocks before method_to_ir () is ran.
10706
10707         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10708         Also avoid optimizing branches pointing to themselves.
10709
10710         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10711
10712 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10713
10714         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10715
10716 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10717
10718         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10719         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10720         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10721         'buf'.
10722
10723         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10724         jumped to the same entry in plt_jump_table.
10725
10726 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10727
10728         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10729         dynamic images.
10730
10731 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10732
10733         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10734         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10735         #421807.
10736
10737 2008-08-29  Geoff Norton  <gnorton@novell.com>
10738
10739         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10740         segment, and doesn't properly handle .space as .text.  Fixes
10741         AOT Mach/ARM
10742
10743 2008-08-29  Geoff Norton  <gnorton@novell.com>
10744
10745         * mini.c: Disable the mach exception handler when running on 
10746         ARM
10747
10748 2008-08-29  Geoff Norton  <gnorton@novell.com>
10749
10750         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10751         globals on Darwin/ARM
10752
10753 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10754
10755         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10756         since too many things depend on it. Instead, call 
10757         mono_runtime_set_no_exec ().
10758         
10759         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10760         the new JIT.
10761
10762         * aot-compiler.c: Add an 'asm-only' AOT option.
10763
10764         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10765                 
10766         * aot-compiler.c (compile_method): Disable gshared support for now as it
10767         doesn't yet work.
10768
10769 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10770
10771         * mini-amd64.h : Fix a compiler warning.
10772
10773         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10774           Changed to use a callback function to retrieve the unwind info.
10775           This avoids problems observed when code blocks were removed by
10776           unloading an app domain.
10777
10778         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10779           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10780           to work properly.
10781
10782         Contributed under MIT/X11 license.
10783
10784 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10785
10786         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10787           case to keep the stack aligned to 8.
10788
10789         Contributed under MIT/X11 license.
10790
10791 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10792
10793         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10794         avoid repeated linear searches.
10795
10796 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10797
10798         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10799         methods it can't handle.
10800         
10801         * aot-compiler.c (add_method): Avoid adding a method twice.
10802         (add_wrappers): Add runtime invoke wrappers for all methods.
10803
10804         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10805         function to create an aot-compatible version of this trampoline.
10806
10807         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10808
10809 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10810
10811         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10812
10813         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10814         with a generic sharing failure.
10815
10816         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10817
10818         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10819         CEE_RETHROW. Fixes #419634.
10820
10821         * mini.c (mono_method_to_ir): Ditto.
10822
10823         * exceptions.cs: Add a new test.
10824         
10825         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10826         to mono_type_stack_size_internal () since some callers might not pass in
10827         an rgctx.
10828
10829         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10830         instrument_prolog. Fixes #419878.
10831
10832         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10833         doubles in soft float mode volatile.
10834
10835 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10836
10837         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10838
10839         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10840         to handle soft float correctly.
10841
10842         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10843         the fast path.
10844
10845         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10846
10847         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10848         to sp, since the generics catch code requires it.
10849
10850         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10851         copying.
10852
10853         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10854         mono_arch_emit_imt_argument ().
10855
10856         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10857
10858         * mini-arm.c tramp-arm.c: Generic sharing updates.
10859
10860 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10861
10862         * mini-arm.c: Fix the arm build.
10863
10864         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10865         handling enums, generic instances and generic sharing.
10866         (mini_type_stack_size_full): Ditto.
10867
10868         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10869         
10870         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10871
10872         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10873
10874         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10875         trampolines.
10876
10877         * mini-arm.c: Various small generic sharing changes.
10878
10879         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10880         this for x86.
10881         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10882         custom code.
10883
10884         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10885         helper function to return a generic class init trampoline.
10886
10887         * method-to-ir.c mini.c: Use it.
10888         
10889         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10890         arch-specfic function to return a generic class init trampoline.
10891
10892         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10893         the GENERIC_CLASS_INIT custom code.
10894
10895         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10896         a fatal error, not a sharing failure.
10897
10898         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10899         needed.
10900
10901         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10902         trampoline argument from MONO_ARCH_VTABLE_REG.
10903
10904         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10905         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10906         argument, and pass the vtable in VTABLE_REG.
10907
10908         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10909         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10910         argument, and pass the vtable in VTABLE_REG.
10911         (mono_arch_create_trampoline_code_full): Remove some special casing for
10912         the rgctx fetch trampoline.
10913
10914         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10915         Fixes #419273.
10916
10917         * iltests.il: Add a test for it.
10918
10919 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10920
10921         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10922
10923         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10924         no longer needed.
10925
10926         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10927         use mono_jit_info_table_find () to avoid recursion.
10928         (mono_delegate_trampoline): Add a sync wrapper here.
10929
10930         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10931         here.
10932
10933         * mini.c (mono_method_to_ir): Ditto.
10934         
10935         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10936         add_sync_wrapper argument. Don't add a sync wrapper here.
10937         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10938
10939         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10940         
10941 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10942
10943         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10944           of nonvolatile registers back from MonoContext to CONTEXT.
10945
10946         Contributed under MIT/X11 license.
10947
10948 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10949
10950         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10951           arguments on Winx64 there are only 4 argument registers.  For this
10952           logic to work the last argument must be pulled from the stack.  
10953
10954         Contributed under MIT/X11 license.
10955
10956 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10957
10958         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10959
10960         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10961         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10962         encode/decode_method_ref ().
10963
10964         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10965
10966         * aot-runtime.c (decode_patch): Ditto.  
10967
10968         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10969         MONO_PATCH_INFO_METHOD.
10970
10971         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10972         MonoGenericJitInfo.
10973
10974         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10975         MonoGenericJitInfo.
10976
10977         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10978
10979         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10980         one from the caller.
10981
10982         * aot-runtime.c (decode_generic_inst): New function to decode and
10983         return a interned generic inst.
10984         (decode_klass_ref): Use it.
10985         (decode_method_ref): Ditto.
10986
10987         * aot-compiler.c (emit_exception_debug_info): Save 
10988         jinfo->has_generic_jit_info too.
10989
10990 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10991
10992         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10993
10994         * iltests.il.in: Add a test for fconv_to_i.
10995
10996         * liveness.c: Disable the liveness2 pass for now to save space.
10997
10998         * regalloc2.c: Include mempool-internals.h to fix warnings.
10999
11000         * aot-compiler.c (encode_method_ref): Encode the context of generic
11001         instance methods.
11002
11003         * aot-runtime.c (decode_method_ref): Inflate generic methods using
11004         the context saved in the aot file.
11005
11006         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
11007
11008         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
11009
11010         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
11011         volatile so they won't be optimized away.
11012
11013 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
11014
11015         * ssa.c:
11016         * ssa2.c:
11017         * mini.c:
11018         * regalloc2.c:
11019         * dominators.c: Remove duplicated functions that now are in
11020         mempool-internals.h.
11021
11022 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
11023
11024         * aot-compiler.c: Fix warnings.
11025
11026         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
11027
11028         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
11029
11030         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
11031         as the patch type.
11032
11033         * mini.c (mono_resolve_patch_target): Ditto.
11034         
11035         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
11036         (encode_klass_ref): Add support for encoding VARs/MVARs.
11037
11038         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
11039
11040         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
11041         the handling of the got entries into a separate 'decode_got_entry' function.
11042         Add support for RGCTX_FETCH.
11043
11044         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
11045         clobbered by the trampoline code.
11046
11047         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
11048         not clobbered by the indirect calling code.
11049
11050 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
11051
11052         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
11053         to fix the build.
11054
11055 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
11056
11057         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
11058         signature using the compilation mempool otherwise we would leak it.
11059
11060 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
11061
11062         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
11063         mono_emit_abs_call ().
11064
11065         * patch-info.h: Add GENERIC_CLASS_INIT.
11066
11067         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
11068
11069         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
11070         as their target as a near call.
11071
11072         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
11073         ABS handling code.
11074         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
11075
11076         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
11077         call to a runtime function described by a patch.
11078
11079         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
11080         mono_emit_abs_call, this has the advantage that the ABS handling code in
11081         mono_codegen () can handle them both, and can handle other stuff in the
11082         future without additional code.
11083
11084         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
11085         entry.
11086         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
11087         abs addresses.
11088
11089         * mini.h: Add missing bblock related prototypes.
11090
11091         * mini.h (MonoCompile): Remove unused reverse_inst_list and
11092         reverse_inst_list_len fields.
11093
11094         * mini.c: Refactor this file a bit by moving branch optimizations to 
11095         branch-opts.c.
11096
11097         * method-to-ir.c: Merge generic sharing changes missed earlier.
11098
11099         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
11100
11101         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
11102         shared patches. Process METHODCONST as a shared patch.
11103
11104         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
11105         as it crashes on the 2.0 mscorlib.
11106
11107         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
11108         to cause crashes.
11109         
11110         * aot-compiler.c: Use is_plt_patch () in a few additional places.
11111         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
11112         by IMT.
11113
11114         * aot-compiler.c: Reorganize the got handling code to be a bit more
11115         understandable.
11116
11117 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11118
11119         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
11120         mono_patch_info_equals/hash, and use it to massively simplify
11121         get_plt_index ().
11122
11123         * mini.c (mono_patch_info_hash): Simplify this and add support for
11124         more patch types.
11125
11126         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
11127
11128         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
11129         handling code, since an offset is not enough to identify a trampoline.
11130
11131         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
11132
11133 2008-08-17  Mark Probst  <mark.probst@gmail.com>
11134
11135         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
11136
11137         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
11138
11139         * mini-ops.h: Argument and result types for OVF_CARRY ops.
11140
11141         * decompose.c: PPC decompositions for various ops.
11142
11143         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
11144
11145 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11146
11147         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
11148         call the generic trampoline code using a call, instead of a jump, to
11149         remove some special casing from the generic trampoline code.
11150
11151         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
11152         (mono_codegen): Ditto.
11153
11154         * aot-compiler.c aot-runtime.c: Ditto.
11155
11156         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
11157
11158         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
11159         helper function to find the offset corresponding to a lazy fetch trampoline.
11160
11161         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
11162         when doing generic sharing.
11163
11164         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
11165         places.
11166         
11167         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
11168         mini-trampolines.c to be with the other trampoline creation functions.
11169
11170         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
11171         as it is equal to method->signature in most cases, add a 
11172         mono_emit_method_call_full variant which takes a signature and an imt
11173         argument as well.
11174
11175 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
11176
11177         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
11178         to this function, since it could be computed easily from the method 
11179         argument.
11180         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
11181         more.
11182
11183         * method-to-ir.c mini.c: Remove references to 
11184         compile_generic_method_wo_context.
11185
11186         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
11187         generic method calls.
11188         
11189         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
11190         dimensional non-szarrays.
11191
11192         * mini.c (mini_init): Register mono_array_new_1.
11193
11194         * jit-icalls.c (mono_array_new_1): New jit icall.
11195
11196         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
11197         pointing to the method.
11198
11199         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
11200         method addresses belonging to METHOD_JUMP patches in the 
11201         jump_target_got_slot_hash.
11202         (mono_aot_load_method): Ditto.
11203
11204         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
11205         METHOD_JUMP patches.
11206
11207         * mini.c (mini_create_jit_domain_info): New helper function which 
11208         initializes/frees domain->runtime_info.
11209         (mini_free_jit_domain_info): Ditto.
11210         (mini_init): Install the domain hook functions with the runtime.
11211
11212         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11213         information maintained by the JIT.
11214
11215         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11216         insertion into jump_table_hash into mono_codegen (), also implement proper
11217         locking.
11218
11219         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11220         tail calls, it is already done by the aot code.
11221         
11222         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11223         mechanism on amd64.
11224
11225         * iltests.il.in: Make the jmp test a bit more complex.
11226
11227         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11228         generic instances which doesn't have a token.
11229
11230         * aot-runtime.c (decode_method_ref): Ditto.
11231         
11232         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11233         can handle this case now.
11234         (handle_box): Ditto.
11235
11236 2008-08-15  Geoff Norton  <gnorton@novell.com>
11237
11238         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11239         debugging check.
11240
11241 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11242
11243         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11244         calling generic methods.
11245
11246         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11247
11248         * aot-runtime.c (decode_patch_info): Ditto.
11249
11250         * mini.c (mono_resolve_patch_target): Ditto.
11251         
11252         * patch-info.h: Add METHOD_RGCTX.
11253
11254         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11255
11256 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11257
11258         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11259         arguments in registers.
11260
11261         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11262         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11263
11264         * mini.c (mini_method_compile): Abort aot compilation for generic
11265         methods if generic sharing is disabled.
11266         
11267         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11268         an mrgctx.
11269
11270         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11271         requiring an mrgctx.
11272
11273         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11274         store instructions when converting a vcall to a normal call.
11275
11276         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11277         mono_arch_find_jit_info.
11278
11279 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11280
11281         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11282         avoid calling mono_method_full_name () for every method even if the
11283         env var is not set.
11284         (check_inline_caller_method_name_limit): Ditto.
11285
11286 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11287
11288         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11289         assemblies in one run.
11290
11291         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11292         skipped methods if it is not 0.
11293
11294         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11295
11296 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11297
11298         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11299           MONO_ARCH_HAVE_UNWIND_TABLE.
11300
11301         Contributed under MIT/X11 license.
11302
11303 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11304
11305         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11306           from default optimizaton list on Winx64.
11307
11308         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11309
11310         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11311           the LMF from the MonoJitTlsData structure.
11312
11313         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11314
11315         Contributed under MIT/X11 license.
11316
11317 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11318
11319         * mini.c (sigsegv_signal_handler): Fix the build.
11320
11321         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11322         assembly->aot_module.
11323
11324         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11325         hash table. This simplifies and speeds up a lot of code, and fixes support
11326         for .netmodules.
11327
11328         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11329         with the runtime.
11330
11331         * mini-exceptions.c: Ditto.
11332         
11333         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11334         'native_offset' argument, since these are computed in the 
11335         mono_find_jit_info () function.
11336
11337         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11338         is used by exceptions-ppc.c.
11339
11340         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11341         mono_arch_find_jit_info ().
11342         
11343         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11344         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11345         generic code in mini-exceptions.c.
11346
11347 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11348
11349         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11350
11351         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11352         
11353         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11354         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11355         called while holding the loader lock. Fixes #415608.
11356         (mono_aot_get_method_from_token_inner): Ditto.
11357
11358 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11359
11360         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11361         to reduce differences between this and the generic implementation in
11362         mini-exceptions.c.
11363         (ves_icall_get_frame_info): Ditto.
11364
11365         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11366
11367         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11368         longer neccesarry.
11369
11370         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11371         mono_arch_get_call_filter () and make it non-static, for consistency with the
11372         other architectures.
11373
11374 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11375
11376         * mini.c:
11377         * local-propagation.c:
11378         * mini-x86.c: Correct the name of arch defines.
11379
11380 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11381
11382         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11383         NO_EMULATE_LONG_SHIFT_OPS define.
11384
11385 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11386
11387         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11388         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11389
11390         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11391         MACH fixes. Merged from the 2.0 branch.
11392
11393         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11394
11395         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11396         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11397
11398         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11399
11400         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11401         mono_marshal_get_native_wrapper () signature changes.
11402
11403 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11404
11405         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11406         conversion bug under arm.
11407
11408 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11409
11410         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11411
11412         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11413         with overflow checking.
11414
11415 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11416
11417         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11418         to the genmdesc.pl file
11419
11420 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11421
11422         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11423         arg_array in the soft-float versions of the LOAD/STORE macros.
11424
11425         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11426         implementation.
11427
11428         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11429
11430 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11431
11432         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11433         a float HFA. Fixes #413621.
11434
11435 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11436
11437         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11438         frame_size to args_size. Fixes build.
11439
11440 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11441
11442         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11443         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11444
11445         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11446         the stack are not unaligned. Fixes #413247.
11447         
11448 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11449
11450         * mini.c: update jitted methods performance counters.
11451
11452 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11453
11454         * mini-exceptions.c: increase the exceptions thrown performance
11455         counter in mono_handle_exception ().
11456
11457 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11458
11459         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11460         can work with netmodules.
11461
11462 2008-07-28  Geoff Norton  <gnorton@novell.com>
11463
11464         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11465         regression tests.
11466
11467 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11468
11469         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11470         correct place.
11471
11472 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11473
11474         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11475           The float param registers and other param registers must be the 
11476           same index on Windows x64.
11477
11478         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11479           ArgValuetypeAddrInIReg argument case.  Setting the argument
11480           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11481
11482         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11483           variable computed above as the copy length for arguments of storage
11484           type ArgValuetypeAddrInIReg.
11485
11486         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11487           ArgValuetypeAddrInIReg argument case.  This case will rely on
11488           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11489
11490         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11491           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11492           jump and tail call instructoins as they do not follow the typical call behavior.
11493
11494         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11495           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11496           local variable and pass the local variable by reference to the called method.
11497
11498         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11499           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11500           of a struct is passed in a register it must be saved with the other
11501           volatile argument on the stack.
11502
11503         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11504           frame pointer the stack adjustment value must be saved to the unwind 
11505           info structure.
11506
11507         Contributed under MIT/X11 license.
11508
11509 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11510
11511         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11512         which got lost in the merge.
11513
11514 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11515
11516         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11517         build.
11518
11519         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11520         
11521         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11522         icalls, since they won't be patched.
11523
11524         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11525         different code sequence when running under valgrind to prevent some valgrind
11526         errors.
11527
11528         * iltests.il.in: Add new regression test.
11529
11530         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11531         end with a throw.
11532
11533         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11534         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11535
11536         * iltests.il.in: Add new test.
11537
11538         * aot-compiler.c: Fix some warnings.
11539
11540         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11541         Fixes #412494.
11542
11543 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11544
11545         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11546         (mini_usage_jitdeveloper): Add a missing --wapi option.
11547
11548 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11549
11550         * mini-codegen.c: Simplify the is_fp macros.
11551         (free_up_ireg): Remove, use free_up_reg instead.
11552         (free_up_reg): Fix the fp case.
11553
11554 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11555
11556         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11557         lowered earlier.
11558
11559         * exceptions-x86.c: Merge some changes which seemed to have got lost
11560         in the linear-ir merge.
11561
11562         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11563
11564         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11565         long vreg volatile even if the variable was already created.
11566
11567         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11568         volatile variables.
11569
11570 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11571
11572         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11573
11574         * mini.c (mono_jit_compile_method_inner): Add support for 
11575         MONO_EXCEPTION_BAD_IMAGE.
11576
11577         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11578         mini_method_get_context () returns NULL. Fixes #356531.
11579
11580         * mini.c (mono_method_to_ir): Ditto.
11581         
11582         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11583         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11584
11585 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11586
11587         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11588         in the LDFTN implementation.
11589
11590 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11591
11592         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11593         code, patch calls to icalls, too, even if they're not in the
11594         shared generic code hash.  Fixes #411962.
11595
11596 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11597
11598         * cpu-x86.md: Increase the length of the fcall opcodes.
11599
11600         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11601         calls returning floats.
11602
11603         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11604         on NEWARR.
11605         
11606         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11607         missed earlier.
11608
11609         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11610         into the domain->method_code_hash.
11611
11612         * aot-compiler.c: Fix win32 build.
11613
11614         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11615         
11616         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11617         gshared NEWARR implementation.
11618
11619         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11620
11621         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11622         can be used outside of method_to_ir.
11623
11624         * mini.h (MonoCompile): Add arg_types field.
11625
11626         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11627         
11628         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11629         the values of the local arg_array and param_types array.
11630
11631 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11632
11633         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11634         got accesses might only get generated later when NEWOBJ is decomposed.
11635         
11636         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11637         looking up the native code of the target method when a delegate is called
11638         for the first time.
11639
11640         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11641         optimization.
11642
11643         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11644
11645         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11646         AOT work on platforms without a working dlsym implementation.
11647
11648         * mini.h: Bump AOT image format version.
11649         
11650 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11651
11652         * mini-exceptions.c: Free a MonoType with
11653         mono_metadata_free_type() instead of g_free().
11654
11655         * aot-runtime.c: Free a MonoType.
11656
11657 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11658
11659         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11660         optimization.
11661
11662         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11663         fp stack on x86.
11664
11665 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11666         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11667         profiler hook.
11668
11669 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11670
11671         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11672         NEWOBJ calls on valuetypes.
11673
11674         * iltests.il.in: Add new test.
11675
11676         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11677
11678 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11679
11680         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11681         is no longer needed.
11682
11683         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11684         non register sized integer arguments.
11685         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11686         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11687         emit_memcpy2 ().
11688
11689         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11690         CEE_MONO_RETOBJ.
11691         
11692         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11693         two a binop with different sized arguments is emitted.
11694
11695         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11696         instruction in the ins==NULL case.
11697
11698 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11699
11700         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11701
11702         * mini-x86.c: Fix osx build.
11703
11704         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11705         opcodes as well.
11706
11707         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11708         instruction for non int sized variables.
11709
11710         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11711         implementation.
11712
11713 2008-07-23  Robert Jordan  <robertj@gmx.net>
11714
11715         * method-to-ir.c: Fix MSVC build.
11716
11717 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11718
11719         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11720         a non int sized type, widen it to an int since newer versions of gcc seem to
11721         generate code which needs this.
11722
11723         * ssa2.c abcremoval2.c: Fix warnings.
11724
11725         * *: Merge the Linear IR branch.
11726
11727         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11728         the ChangeLog file there describes all the changes done over the years. 
11729         Further documentation can be found at www.mono-project.com/Linear_IL.
11730
11731 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11732
11733         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11734           The float param registers and other param registers must be the 
11735           same index on Windows x64.
11736
11737         Contributed under MIT/X11 license.
11738
11739 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11740
11741         * mini.c: Make the previous fix GC safe.
11742
11743 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11744
11745         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11746
11747 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11748
11749         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11750           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11751           ArgValuetypeAddrInIReg instead.
11752
11753         Contributed under MIT/X11 license.
11754
11755 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11756
11757         * mini-codegen.c (get_register_spilling): Fix a warning.
11758
11759 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11760
11761         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11762         for types which the initialization fails. Raises the provided exception
11763         at the right stop after cleanup.
11764
11765 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11766
11767         * aot-compiler.c: Free most of the memory allocated during compilation.
11768
11769         * mini.c (mini_parse_debug_options): Fix a leak.
11770         
11771         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11772         during aot compilation.
11773
11774 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11775
11776         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11777         it has too much register pressure.
11778
11779 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11780
11781         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11782
11783 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11784
11785         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11786         on x86.
11787
11788         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11789         on amd64 similar to the way it is done on arm.
11790
11791         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11792
11793         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11794         consistency, normalize error messages, avoid loading aot-only modules in
11795         normal mode.
11796
11797         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11798         for consistency.
11799
11800         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11801
11802 2008-07-11  Martin Baulig  <martin@ximian.com>
11803
11804         * debug-debugger.h
11805         (MonoDebuggerInfo): Add `interruption_request'.
11806
11807 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11808
11809         * aot-compiler.c (emit_plt): Remove some dead code.
11810
11811         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11812
11813         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11814         return the plt info offset belonging to a given plt entry.
11815
11816         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11817         mono_aot_get_plt_info_offset.
11818         
11819         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11820         similar to the amd64 code by makeing jumps through a separate jump table 
11821         instead of embedding the jump addresses into the code.
11822
11823 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11824
11825         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11826         method.
11827
11828 2008-07-10  Martin Baulig  <martin@ximian.com>
11829
11830         * mini.c (mini_method_compile): Disable generics sharing when
11831         running in the debugger.
11832
11833 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11834
11835         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11836
11837         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11838         the local register allocator from running out of registers on x86 when 
11839         using aot.
11840
11841 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11842
11843         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11844         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11845         C4146.
11846
11847         Contributed under MIT/X11 license.
11848
11849 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11850
11851         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11852         speed up the assembler.
11853
11854 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11855
11856         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11857         support.
11858
11859         * mini.c: Move the soft float handling macros a bit earlier, add 
11860         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11861         place.
11862
11863         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11864
11865         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11866         read-only to help catch code allocation requests.
11867         
11868         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11869         and turn it off when using --aot-only or when compiling with --aot=full.
11870
11871         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11872         jump table for switches from the normal domain mempool, not the code
11873         manager.
11874
11875         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11876         unbox trampoline which handles aot-only mode too.
11877
11878         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11879         an AOTed unbox trampoline.
11880
11881         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11882
11883 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11884
11885         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11886         ""
11887
11888         Contributed under MIT/X11 license.
11889
11890 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11891
11892         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11893           the unwind information for the method at the end of the allocated block.
11894           
11895         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11896           MonoCompileArch to hold the unwind info for SEH on Winx64
11897         
11898         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11899           frame pointer info for the method being compiled.
11900           
11901         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11902           the call to mono_exception_from_token.
11903           
11904         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11905           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11906           information is stored a the end of the method block because it is all 32-bit offset based.
11907
11908         Contributed under MIT/X11 license.
11909
11910 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11911
11912         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11913
11914         * wapihandles.c: Fix warnings.
11915
11916         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11917         mode.
11918
11919         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11920         mono_jit_compile_method in aot-only mode since that calls the type 
11921         initializer.
11922         
11923         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11924         get_delegate_invoke_impl in aot-only mode.
11925
11926         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11927
11928 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11929
11930         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11931
11932         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11933         is on by default.
11934
11935         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11936
11937         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11938         init trampoline from the AOT file as well.
11939
11940         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11941         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11942         code.
11943
11944         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11945         mono_init.
11946
11947         * exceptions-amd64.c: Add _full variants for the remaining exception code
11948         creation functions as well, allow emission of relocatable code, remove
11949         caching since that is now done by the caller.
11950
11951         * mini-exceptions.c: Add _full variants for the remaining exception code
11952         creation functions as well, add aot-only support.
11953
11954         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11955         if we can determine a proper token for them.
11956         (add_wrappers): Add a few more wrappers.
11957         (emit_method_code): Remove some dead code.
11958         (emit_trampolines): Emit exception code too.
11959
11960         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11961
11962         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11963         mono_array_new_va which avoids varargs.
11964
11965         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11966
11967         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11968         mono_arch_create_specific_trampoline () in all places.
11969
11970         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11971         a bit so it can be used for other things as well.
11972         
11973         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11974         on demand as well.
11975
11976         * exceptions-amd64.c: Rename the caching from the exception code creation
11977         functions, it is done by the caller instead.
11978         
11979         * exceptions-amd64.c: Change the signature of the exception code creation 
11980         functions to allow the creation of relocatable code later.
11981
11982         * mini-exceptions.c: Add a set of functions to query the various 
11983         runtime-generated exception functions.
11984
11985         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11986         mono_arch_.. () functions.
11987         
11988 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11989
11990         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11991
11992         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11993
11994         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11995         (mini_get_vtable_trampoline): Ditto.
11996
11997         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11998         code in the AOT case by returning the code size and a list of relocations to
11999         the caller.
12000
12001         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
12002
12003 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
12004
12005         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
12006           clean the stack.
12007
12008         Contributed under MIT/X11 license.
12009
12010 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
12011
12012         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
12013         so the buffer size can be computed correctly. Fixes #404735.
12014
12015         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
12016         normally as cfg->debug_info is already freed.
12017
12018 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
12019
12020         * mini-amd64.c: For calls returning vtypes in registers, don't store
12021         the return address on the stack, instead allocate a separate local for
12022         it. Fixes #404729.
12023
12024 2008-07-05  Mark Probst  <mark.probst@gmail.com>
12025
12026         * mini-trampolines.c, mini.h: Add an argument to
12027         mono_create_jit_trampoline_in_domain() for turning off the adding
12028         of the sync wrapper.
12029
12030         * mini.c: Use the JIT trampoline without sync instead of
12031         ldftn_nosync in static RGCTX invoke wrappers so that the call can
12032         be patched.
12033
12034 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12035
12036         * driver.c: Turn on GSHARED optimization by default.
12037
12038 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
12039
12040         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
12041         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
12042
12043         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
12044         create a variant of the generic trampoline code callable from AOTed trampolines.
12045
12046         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
12047         trampoline code callable from AOTed trampolines.
12048
12049         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
12050
12051 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12052
12053         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
12054         pass-through manner.
12055
12056         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
12057         and don't fail sharing for them anymore.
12058
12059         * mini-exceptions.c: Handle exceptions in shared generic methods.
12060
12061         * generic-sharing.c: When checking the context of a generic
12062         method, also check its class's context.  Don't treat wrappers as
12063         sharable.
12064
12065         * mini-trampolines.c: Some code factored out to
12066         metadata/generic-sharing.c.  Handle the MRGCTX case.
12067
12068         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
12069         we must deal with the method being of another instantiation of the
12070         class.  Add static rgctx invoke wrappers to generic methods.
12071
12072 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12073
12074         * mini.c: Provide all jit infos of generic shared methods with a
12075         generic jit info.
12076
12077         * mini-exceptions.c: Handle the new situation that a generic info
12078         might be available, but not info about the this/vtable/mrgctx
12079         variable.
12080
12081 2008-07-03  Mark Probst  <mark.probst@gmail.com>
12082
12083         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
12084         generic methods.
12085
12086 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
12087
12088         * dominators.c (check_dominance_frontier): Fix a warning.
12089
12090         * mini.h: Add some missing prototypes.
12091
12092         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
12093
12094         * driver.c (mono_jit_init_version): Correct the comments since the first
12095         argument should be the name of the root domain, not a filename.
12096
12097         * aot-runtime.c (make_writable): Error out if this is called while running
12098         with --aot-only.
12099         (load_aot_module): Ditto.
12100
12101         * aot-compiler.c: Really fix the computation of method indexes.
12102
12103         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
12104         optimizations as this is no longer called frequently.
12105
12106         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
12107         method and the invoke impl code and pass it to the delegate trampoline instead of
12108         just the delegate class.
12109
12110 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
12111
12112         * aot-compiler.c: Fixup the computation of method indexes.
12113         (add_wrappers): Create the base methods of the runtime invoke wrappers using
12114         the method builder infrastructure.
12115
12116         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
12117         has no header.
12118
12119         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
12120         mode, load the method right away instead of creating a trampoline.
12121
12122         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
12123
12124         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
12125         some checks a bit.
12126
12127 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
12128
12129         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
12130         (mono_aot_load_method): Use method_index instead of method->token.
12131
12132         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
12133         can handle icalls etc. properly.
12134
12135         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12136
12137         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
12138
12139         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
12140         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
12141         JIT_ICALL_ADDR patch type.
12142
12143         * patch-info.h: Add JIT_ICALL_ADDR patch type.
12144
12145         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
12146         request flag.
12147         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
12148
12149         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
12150
12151 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
12152
12153         * mini.c: Use domain->jit_code_hash_lock for controlling access to
12154         domain->jit_code_hash.
12155
12156 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
12157
12158         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
12159
12160 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
12161
12162         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
12163         get_this_arg_from_call, let it compute it when needed.
12164
12165         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
12166         gsctx from code only when needed.
12167
12168         * mini-trampolines.c (get_generic_context): Rename this to 
12169         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
12170         it can be called by the arch backends.
12171
12172         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
12173
12174 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
12175
12176         * driver.c (mono_main): Add experimental --aot-only command line option.
12177
12178         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
12179         set.
12180
12181 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
12182
12183         * driver.c (DllMain): Remove mono_module_handle.
12184
12185         Contributed under MIT/X11 license.
12186
12187 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
12188
12189         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
12190         for emitting methods which are not in the source assembly. Detect and report
12191         failure of assembling+linking.
12192         
12193         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
12194
12195         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
12196
12197 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
12198
12199         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
12200
12201 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
12202
12203         * mini.h: Remove some obsolete prototypes.
12204
12205         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
12206
12207 2008-06-24  Mark Probst  <mark.probst@gmail.com>
12208
12209         * mini.c (get_object_generic_inst): Variable-sized arrays are not
12210         supported by Visual Studio, so use alloca().
12211
12212 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12213
12214         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12215         Fixes #402585.
12216
12217 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12218
12219         * mini.c: Fail sharing of a generic method if it contains an open
12220         catch clause (because we don't pass MRGCTXs yet).
12221
12222 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12223
12224         * mini.c: When compiling a method with generic sharing, insert the
12225         method instantiated with an all-Object generic context into the
12226         jit info table, instead of the context of the first instantiation
12227         of the method we happen to compile.
12228
12229 2008-06-18  Martin Baulig  <martin@ximian.com>
12230
12231         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12232         `major_version' and `minor_version'.
12233
12234 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12235
12236         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12237         mono_method_is_generic_sharable_impl() takes an additional
12238         argument specifying whether to treat type variables as reference
12239         types.
12240
12241 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12242
12243         * mini.h: Removed obsolete prototypes.
12244
12245 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12246
12247         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12248         already handle them.
12249
12250 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12251
12252         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12253         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12254         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12255         tramp-x86.c: Added a MonoGenericContext* argument to
12256         mono_arch_get_unbox_trampoline() so that it can call other
12257         functions which require it.
12258
12259 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12260
12261         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12262         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12263         mono_arch_get_this_arg_from_call() takes a
12264         MonoGenericSharingContext* as well.
12265
12266 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12267
12268         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12269         implement generic sharing of unbox.
12270
12271 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12272
12273         * mini.c: Don't compute the vtable to determine whether a field is
12274         special static, because it might not work for open types.
12275
12276 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12277
12278         * mini.c: Removed the unused token_type and token_source arguments
12279         from get_runtime_generic_context_ptr().
12280
12281 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12282
12283         * mini.c (ADD_BINOP): fix the build
12284
12285 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12286
12287         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12288         a widening op.
12289
12290 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12291
12292         * mini.h: Removed class relations enum that's not used anymore.
12293
12294 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12295
12296         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12297
12298         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12299         the lazy fetch trampoline access code.
12300
12301 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12302
12303         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12304
12305 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12306
12307         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12308
12309         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12310
12311         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12312
12313 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12314
12315         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12316         intrinsics.
12317
12318         * mini-ops.h: Add MIN/MAX_UN opcodes.
12319
12320         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12321         intrinsics.
12322
12323         * basic-math.cs: Add more min/max tests.
12324
12325         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12326
12327 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12328
12329         * mini.c: Small fix in the prologue of emit_castclass.
12330
12331 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12332
12333         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12334
12335         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12336         do not work even for unsigned types. Fixes #400014.
12337
12338         * basic-math.cs: Add regression tests for unsigned Min/Max.
12339
12340 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12341
12342         * mini.c: Added additional context_used argument to several
12343         functions, which will be needed for sharing generic methods.  Use
12344         GET_RGCTX macro wherever appropriate.  Declare only one
12345         context_used in mono_method_to_ir().
12346
12347 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12348
12349         * mini.c, generic-sharing.c: Removed generic class relations.
12350
12351         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12352         functions due to MRGCTX changes.
12353
12354 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12355
12356         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12357         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12358         with calculated IMT.
12359
12360         * mini.c: Generic sharing of calls via generic interfaces.
12361
12362         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12363         generic method with non-constant MonoGenericContext*.  Instead,
12364         the context is taken out of the method itself.
12365
12366 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12367
12368         * mini.c: Generic sharing of ldvirtftn.
12369
12370 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12371
12372         * mini.c: Generic sharing of ldftn.
12373
12374 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12375
12376         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12377
12378 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12379
12380         * mini.c: Generic sharing of the special case of ldtoken followed
12381         by a call to GetTypeFromHandle.
12382
12383 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12384
12385         * mini.c: Generic sharing of box for nullable types.
12386
12387 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12388
12389         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12390         are passed on the stack. Fixes #324807.
12391
12392 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12393
12394         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12395         for the ArgValuetypeAddrInIReg case.
12396
12397         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12398         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12399
12400         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12401         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12402         local variable and pass the local variable by reference to the called method.
12403           
12404         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12405         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12406
12407         Contributed under MIT/X11 license.
12408
12409 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12410
12411         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12412
12413         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12414         everything.
12415
12416 2008-06-10  Martin Baulig  <martin@ximian.com>
12417
12418         * debug-mini.c
12419         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12420
12421 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12422
12423         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12424         possible error when no arguments are passed.
12425
12426         Contributed under MIT/X11 license.
12427
12428 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12429
12430         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12431         where the file name is NULL.
12432
12433 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12434
12435         * mini.c: Fix s390 build.
12436
12437 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12438
12439         * trace.c (mono_trace_parse_options): Fix warnings.
12440
12441         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12442
12443 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12444
12445         * mini.c (remove_block_if_useless): Avoid printing the method name.
12446         
12447         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12448         MONO_INST_NEW.
12449
12450         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12451         LMF. Not yet used.
12452
12453         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12454         translated code after it has been patched.
12455
12456 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12457
12458         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12459         avoid problems during code patching on SMP systems.
12460         (emit_call): Avoid adding a patch info which is already added by 
12461         emit_call_body.
12462         (mono_arch_emit_exceptions): Ditto.
12463
12464 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12465
12466         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12467         MONO_TYPE_ISSTRUCT already checks for it.
12468
12469 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12470
12471         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12472           structs with floats on Winx64 the float registers are not used.  
12473           The integer registers are always used..
12474         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12475           only one register will be used and only if the size of the struct 
12476           is 1,2,4, or 8 bytes.
12477
12478         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12479           to work for Winx64.
12480
12481         Contributed under MIT/X11 license.
12482
12483 2008-06-05  Martin Baulig  <martin@ximian.com>
12484
12485         * debug-debugger.c (debugger_lookup_class): Also call
12486         mono_class_setup_methods() here; we're only called from RTI.
12487
12488 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12489
12490         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12491         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12492         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12493         Post-process object files and add dtrace-generated object, if necessary.
12494
12495         Contributed under MIT/X11 license.
12496
12497 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12498
12499         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12500         element class.
12501
12502         * mini.c: Generic sharing for unbox.any and castclass.
12503
12504 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12505
12506         * mini.c: Ignore tailcall prefix in shared generic code and when
12507         doing calls which require a vtable/rgctx argument.
12508
12509 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12510
12511         * mini.c: Don't free the JIT info.
12512
12513         * driver.c: Changes in the JIT info table testing code.
12514
12515 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12516
12517         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12518         interruption. Fix some warnings.
12519
12520         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12521         interruption_checkpoint.
12522
12523 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12524
12525         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12526         from embedding applications.
12527
12528 2008-06-02  William Holmes  <billholmes54@gmail.com>
12529
12530         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12531           reserving 32 bytes on the stack when making calls. 
12532
12533         Contributed under MIT/X11 license.
12534
12535 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12536
12537         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12538         the linear IL branch.
12539
12540         * driver.c: Print out more information for --version on arm.
12541
12542 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12543
12544         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12545         bb_exit instead, since out of line bblocks might not actually be emitted
12546         out-of-line.
12547         
12548         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12549         maximum epilog size for out of line bblocks if tracing is enabled.
12550
12551         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12552
12553 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12554
12555         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12556
12557 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12558
12559         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12560         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12561         opcodes.
12562
12563 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12564
12565         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12566         the 'value' to store is a constant.
12567
12568         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12569
12570         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12571         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12572
12573 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12574
12575         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12576         for accessing method->generic_container.
12577
12578 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12579
12580         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12581         
12582         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12583
12584         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12585
12586         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12587         fails.
12588
12589 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12590
12591         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12592
12593         * mini.c: Handle the case when mono_class_vtable () fails.
12594
12595 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12596         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12597         the stat profiler.
12598
12599 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12600
12601         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12602         together with domain sharing.
12603
12604 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12605
12606         * mini.c: Treat callvirts to final methods like non-virtual calls
12607         when doing generic sharing, i.e. look them up in the runtime
12608         generic context.
12609
12610 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12611
12612         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12613         with computed types (for generic sharing).
12614
12615         * mini.c: Generic sharing for mkrefany and refanyval.
12616
12617 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12618
12619         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12620         possible.
12621
12622         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12623         the generic sharing code.
12624         
12625         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12626         when needed.
12627
12628 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12629
12630         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12631
12632 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12633
12634         * driver.c: updated copyright date
12635
12636 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12637
12638         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12639         needed.
12640
12641 2008-05-19  Martin Baulig  <martin@ximian.com>
12642
12643         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12644         pointing to the new `_mono_debug_using_mono_debugger' variable.
12645
12646         * driver.c
12647         (mono_main): Check mono_debug_using_mono_debugger() rather than
12648         the `MONO_INSIDE_MDB' environment variable to check whether we're
12649         inside the debugger.
12650
12651 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12652
12653         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12654         argument.
12655
12656 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12657
12658         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12659
12660         * mini.c: Added mini_assembly_can_skip_verification. This
12661         function checks if the assembly requested to skip verification. 
12662         Fixes part of #387274.
12663
12664 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12665
12666         * mini.c (mini_get_method): Disable the check for open generic classes when
12667         using generic sharing.
12668
12669         * generics.cs: Add a test for #387034.
12670
12671         * mini.c (mini_get_method): Check whenever the method class is an open generic
12672         type, and return NULL in that case, causing a verification error. Fixes
12673         #384123.
12674
12675 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12676
12677         * driver.c (mono_main): Revert r102623. The right
12678         thing to do is to enable the verifier under verifiable
12679         unless a --security flag was passed.
12680
12681         We need this non-trivial behavior for --verify-all otherwise
12682         mcs-compileall won't be able to use it. As it needs everything to
12683         be verified under validil.
12684
12685 2008-05-06  Martin Baulig  <martin@ximian.com>
12686
12687         Fix #383749.
12688
12689         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12690         (mono_debugger_thread_cleanup): Likewise.
12691         (mono_debugger_extended_notification): Likewise.
12692
12693 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12694
12695         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12696         against both inflated and non-inflated methods. We need to check against the
12697         generic definition for cases where the instantiated method is not visible.
12698         We need to check against the inflated types for cases where the instantiation
12699         changes any super type. This fixes #382986.
12700
12701         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12702         that check for visibiliy as generic params only appears as the type subject
12703         of tokens on call opcodes. Field manipulation and ldftn must always
12704         target an exact type.
12705
12706 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12707
12708         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12709         if no related --security flag is passed.
12710
12711 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12712
12713         * mini-arch.h: Prepare support for ppc64.
12714
12715         Contributed under MIT/X11 license.
12716
12717 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12718
12719         * aot-runtime.c: Prepare support for ppc64.
12720
12721         Contributed under MIT/X11 license.
12722
12723 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12724
12725         * mini-ops.h: Prepare support for ppc64.
12726
12727         Contributed under MIT/X11 license.
12728
12729 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12730
12731         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12732
12733         Contributed under MIT/X11 license.
12734
12735 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12736
12737         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12738         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12739         assemblies on windows.
12740
12741 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12742
12743         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12744         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12745         * main.c: Use UTF-8 encoded command line instead of Windows default code
12746         page on Windows to support Unicode.
12747         * driver.c (DllMain): New function for mixed-mode assembly support.
12748         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12749         export __stdcall functions without decoration.
12750
12751         Contributed under MIT/X11 license.
12752
12753 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12754
12755         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12756         saving it very early.
12757
12758 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12759
12760         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12761         deleted.  The only way to access the new RGCTX is via the
12762         trampline.
12763
12764         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12765         vtable instead of the RGCTX to static methods.
12766
12767         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12768         accessing the new RGCTX.
12769
12770         * generic-sharing.c: There is no separation between self, type
12771         arguments and other types in the RGCTX anymore.
12772
12773 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12774
12775         * mini-amd64.c (add_general): Remove previous stack adjustment.
12776         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12777         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12778         for 32 bytes of stack space reserved for all calls.
12779         
12780         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12781         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12782         adjustment.
12783         
12784         Code contributed under MIT/X11 license.
12785
12786 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12787
12788         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12789         against the root definition, peeling out method and type instantiations.
12790         Cache verify success results, code that fails verification is still
12791         checked multiple times.
12792
12793 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12794
12795         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12796
12797 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12798
12799         * mini-amd64.c (add_general): Always increment stack on Win64.
12800         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12801         on Win64.
12802         
12803         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12804         stack based argument handling on Win64.
12805         
12806         Code contributed under MIT/X11 license.
12807
12808 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12809
12810         * Makefile.am (version.h): Add support for git-svn.
12811
12812 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12813
12814         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12815         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12816         avoiding allocations and libc functions which might deadlock.
12817         
12818         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12819         'no-gdb-backtrace' option is set.
12820
12821         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12822
12823         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12824
12825 2008-04-21  Martin Baulig  <martin@ximian.com>
12826
12827         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12828         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12829
12830 2008-04-21  Martin Baulig  <martin@ximian.com>
12831
12832         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12833         `thread_vtable', `event_handler_ptr' and `event_handler'.
12834
12835 2008-04-21  Martin Baulig  <martin@ximian.com>
12836
12837         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12838         allows delayed initialization of the `executable_code_buffer' when
12839         attaching.
12840
12841 2008-04-21  Martin Baulig  <martin@ximian.com>
12842
12843         * mini.h (mono_debugger_create_notification_function): Removed.
12844         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12845
12846         * mdb-debug-info64.s
12847         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12848
12849         * mdb-debug-info32.s
12850         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12851
12852         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12853         currently only works on x86 and x86_64, so don't create it on ppc.
12854
12855 2008-04-21  Martin Baulig  <martin@ximian.com>
12856
12857         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12858
12859         * mini.c
12860         (mini_method_compile): In the fp elimination check, check
12861         `debug_options.mdb_optimizations' in addition to
12862         mono_debug_using_mono_debugger().       
12863
12864         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12865         disable some JIT optimizations which are only disabled when
12866         running inside the debugger.
12867         Added `--help-debug' option to describe the debugging options.
12868         (parse_debug_options): New static function to parse the `--debug'
12869         options, so we can easily add more stuff in future.
12870
12871 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12872
12873         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12874         the method has no body.
12875
12876 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12877
12878         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12879         assembly is not allowed in MSVC 64-bit compiler. 
12880         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12881         as we get floating point exceptions everywhere.
12882         
12883         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12884         correctly align arguments for call to throw_exception.
12885         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12886         
12887         Code contributed under MIT/X11 license.
12888
12889 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12890
12891         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12892
12893 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12894
12895         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12896
12897         * mini-amd64.c (NEW_INS): Set cil_code.
12898
12899         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12900         from mini-amd64.c so all debugger related logic is in one place.
12901
12902         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12903         later won't have a random ip assigned to them.
12904
12905 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12906
12907         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12908         the arch specific function initializes code_size.
12909         (mono_create_delegate_trampoline): Ditto.
12910
12911         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12912         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12913         platforms.
12914
12915         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12916         running under the debugger.
12917
12918         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12919         debugger.
12920
12921         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12922         debugger. Also move the disabling of optimizations here from driver.c.
12923         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12924         debugger.
12925
12926         * mini.h (MonoCompile): Add a few new flags.
12927
12928 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12929
12930         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12931         so the cil_code field of created MonoInst's is properly set.
12932         (mini_select_instructions): Ditto.
12933
12934         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12935         (MONO_INST_NEW_CALL): Ditto.
12936
12937         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12938         in many places so the ins->cil_code field is properly initialized.
12939
12940         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12941         place.
12942
12943 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12944
12945         * mini.c (mini_method_compile): Print a different message when compiling a 
12946         shared method.
12947         
12948         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12949         > 1.
12950
12951 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12952
12953         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12954         SSE2 instructions.
12955
12956         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12957         
12958 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12959
12960         * mini.c (handle_stack_args): Make this return void since its return value was
12961         never used. Also set cfg->unverifiable for invalid IL instead of calling
12962         G_BREAKPOINT ().
12963
12964 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12965
12966         * mini.c: Make sure "this" is live in catch clauses with type
12967         variables in shared generic code.
12968
12969 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12970
12971         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12972         generic_class_is_reference_type() to ensure the proper behaviour
12973         when sharing generic code and the type in question is a type
12974         argument.
12975
12976 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12977
12978         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12979         race conditions when printing thread dumps. Fixes #377738.
12980
12981 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12982         
12983         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12984         shows up when both MonoInst arguments can cause aliasig.
12985         There is likely no way in the current JIT to trigger this problem, but
12986         it showed up in the development of generics sharing, when in a new
12987         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12988         When the generics sharing code will be committed, its tests will be
12989         valid also for this bug.
12990
12991 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12992
12993         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12994         PATCH_INFO_METHOD.
12995
12996         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12997         NULL.
12998
12999 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
13000
13001         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
13002         use a more detailed exception message for InvalidCastException.
13003
13004         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
13005
13006         * driver.c (mono_main): Add --debug=casts option to turn on better 
13007         InvalidCastException message details.
13008
13009         * mini.c (mini_get_debug_options): New helper function to return the address of
13010         the debug_options variable.
13011
13012         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
13013         the jit_tls TLS variable.
13014
13015         * mini.c (mono_jit_tls): New TLS variable.
13016
13017         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
13018         option is used.
13019
13020 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
13021
13022         * mini.h: Removed verifer related stuff. This code was moved to verify.c
13023
13024         * mini.c: Removed verifer related stuff, code moved to verify.c.
13025
13026         * driver.c: Using code from verify.c instead of mini.c.
13027
13028 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
13029
13030         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
13031         longer valid.
13032
13033 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
13034
13035         * mini.c (check_for_method_verify): Enabling verification of
13036         corlib if mono_verify_all is set. Bugs in the verifier preventing that
13037         have been fixed.
13038
13039 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
13040
13041         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
13042         caller saved registers as well.
13043         
13044         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
13045         saved registers as well.
13046
13047 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
13048
13049         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
13050
13051         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
13052         code.
13053
13054 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
13055
13056         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
13057         to get_call_info.
13058         (get_call_info): Take a gsctx argument instead of 'cfg'.
13059
13060 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
13061
13062         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
13063         mono_verify_all is set.
13064
13065         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
13066
13067         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
13068
13069 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
13070
13071         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
13072         an exception.
13073
13074         * driver.c mini.c mini.h: Add a --verify-all development option to test the
13075         verifier and the code generated by the compiler.
13076
13077 2008-03-25  Mark Probst  <mark.probst@gmail.com>
13078
13079         * mini.c: Generic sharing of the non-nullable case of the box
13080         instruction.
13081
13082 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
13083
13084         * inssel.brg: Fix the build.
13085
13086         * iltests.il.in: Add a test for lconv.ovf.u8.un.
13087
13088 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
13089
13090         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
13091         Array:Address. Fixes #372410.
13092
13093         * iltests.il.in: New tests for readonly prefix.
13094
13095 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
13096
13097         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
13098         mini-trampolines.c.
13099
13100         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
13101         mini-exceptions.c.
13102
13103         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
13104         
13105         * mini.c (mono_decompose_op_imm): New helper function.
13106
13107         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
13108         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13109         return value.
13110
13111         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13112         mono_arch_output_basic_block. Fix warnings.
13113
13114         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
13115         for now.
13116
13117 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
13118
13119         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
13120         since the extra frame is now detected automatically inside the loop.
13121
13122         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
13123         opts which are now in mono_peephole_ins ().
13124         
13125         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
13126
13127         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
13128         frames and skip duplicate managed-to-native frames. Fixes #367665.
13129
13130         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13131         opts which are now in mono_peephole_ins ().
13132         (mono_arch_peephole_pass_2): Ditto.
13133
13134         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
13135
13136         * mini-codegen.c (mono_peephole_ins): New helper function containing the
13137         arch independent peephole optimizations.
13138
13139         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13140         opts which are now in mono_peephole_ins ().
13141
13142         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
13143         
13144         * mini-s390.c (mono_arch_output_basic_block): Fix build.
13145
13146         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
13147         pattern.
13148
13149         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
13150         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
13151         opcode. 
13152
13153 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
13154
13155         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
13156         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13157         return value.
13158
13159         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13160         mono_arch_output_basic_block. Fix warnings.
13161
13162 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13163
13164         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13165         conv.ovf.u.un.
13166
13167 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13168
13169         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13170         conv.ovf.u.un.
13171
13172         * iltests.il: Add new tests.
13173
13174 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
13175
13176         * mini.c: Removed Windows version macros.
13177
13178 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13179
13180         * generic-sharing.c: Put reflection types in the extensible part
13181         of the runtime generic context.
13182
13183         * mini.c: Generic sharing of the GetTypeHandle special case of the
13184         ldtoken instruction.
13185
13186 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13187
13188         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
13189
13190         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
13191         
13192         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
13193         consistency with the other version on the linear IR branch.
13194
13195         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
13196
13197         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
13198
13199         * iltests.il.in: Add new tests.
13200
13201 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
13202
13203         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
13204
13205         * iltests.il.in: Add new tests.
13206
13207 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13208
13209         * mini.c: Two variables with the same name were declared in
13210         nesting contexts and one wasn't initialized.  Fixed.
13211
13212 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13213
13214         * mini.c: Generic sharing of the initobj instruction.
13215
13216 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13217
13218         * mini.c: make the test to optimize ldtoken from typeof() more
13219         precise.
13220
13221 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13222
13223         * mini.c: Generic sharing of the initobj instruction for reference
13224         types.
13225
13226 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13227
13228         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13229         the mono_breakpoint_clean_code() code to perform bound checks.
13230
13231 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13232
13233         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13234         mono_arch_patch_callsite() to include the start of the managed method
13235         to be able to perform bound checks.
13236
13237 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13238
13239         * mini.c: Generic sharing for the isinst instruction.
13240
13241 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13242
13243         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13244         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13245         with the runtime generic context argument.
13246
13247         * mini.c: Share calls to several types of unsharable methods by
13248         putting the address of the method code in the runtime generic
13249         context and doing an indirect call.
13250
13251         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13252         to switches.
13253
13254 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13255
13256         * generic-sharing.c: Change due to a change in the runtime genric
13257         context API.
13258
13259 2008-03-15  Martin Baulig  <martin@ximian.com>
13260
13261         * tramp-x86.c
13262         (mono_arch_nullify_class_init_trampoline): Add call to
13263         mono_breakpoint_clean_code() to make things work when running
13264         inside the debugger.
13265
13266         * tramp-amd64.c
13267         (mono_arch_nullify_class_init_trampoline): Add call to
13268         mono_breakpoint_clean_code() to make things work when running
13269         inside the debugger.
13270
13271 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13272
13273         * inssel-long.brg (reg): Fix 64 bit build.
13274
13275 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13276
13277         * mini.c, mini.h: Share static generic code by passing it an
13278         implicit argument pointing to the runtime generic context.
13279
13280         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13281         inssel-long32-mips.brg: New opcodes for calling shared static,
13282         which need to be passed the runtime generic context.
13283
13284         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13285         argument on the stack in the prologue if needed.  New function for
13286         finding the runtime generic context argument from the registers
13287         saved by the trampoline.
13288
13289         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13290         runtime generic context argument.
13291
13292         * tramp-amd64.c: Also restore the register used for the runtime
13293         generic context argument.
13294
13295         * mini-trampoline.c: Resolve shared static calls by consulting the
13296         runtime generic context via the new argument.
13297
13298         * generic-sharing.c: Add an argument to sharability-checking
13299         functions that specifies whether type variables should be treated
13300         as sharable type arguments.
13301
13302         * inssel-x86.brg: Removed a superfluous, buggy rule.
13303
13304         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13305         to switches.
13306
13307 2008-03-14  Martin Baulig  <martin@ximian.com>
13308
13309         * debug-debugger.c (main_thread_handler): Call
13310         mono_runtime_run_main() without sending any notifications.
13311
13312         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13313
13314 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13315
13316         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13317
13318 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13319
13320         * tramp-x86.c: Fixed register restore offsets in the trampoline
13321         code for ECX and EDX.
13322
13323 2008-03-12  Geoff Norton  <gnorton@novell.com>
13324
13325         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13326         different ucontext_t implementations.
13327         * exceptions-arm.c: Use the above defines to get exceptions working on 
13328         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13329         * mini-arm.c: Implement iPhone icache support (based on a patch by
13330         Luke Howard lukeh@padl.com)
13331
13332 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13333
13334         * mini.c: Enable generic sharing of calls to non-static
13335         non-interface non-generic non-value-type methods.
13336
13337         * mini-trampolines.c: Resolve calls from shared generic code.
13338
13339 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13340
13341         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13342
13343         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13344
13345 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13346
13347         * mini.c: some fixes for the AOT compiler.
13348
13349 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13350
13351         * cpu-amd64.md: Add clob:1 to some float opcodes.
13352
13353 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13354
13355         * mini.h: Added MiniVerifierMode enumeration.
13356
13357         * mini.c: Added mini_verifier_set_mode to control
13358         the usage of the new verifier.
13359
13360         * mini.c (mono_method): Integrated the new verifier.
13361
13362         * driver.c: Extended --security option with validil and
13363         verifiable options to activate the new verifier.
13364
13365 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13366
13367         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13368         optimization to ctors taking 0 or 2 arguments too.
13369
13370         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13371         a bit.
13372
13373         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13374
13375         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13376
13377 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13378
13379         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13380         non-aot case as well.
13381
13382         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13383
13384         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13385         changes.
13386
13387         * aot-compiler.c (encode_patch): Ditto.
13388
13389         * mini.h (G_MININT32): Fix the definition of this.
13390
13391 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13392
13393         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13394
13395         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13396
13397 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13398
13399         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13400         methods returning vtypes in registers.
13401         (mono_arch_allocate_vars): Ditto.
13402
13403         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13404
13405         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13406
13407         * generics.cs: Add a test from the linear IR branch.
13408
13409         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13410
13411         * mini.c (inline_method): Cache failed inline attempts.
13412
13413 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13414
13415         * mini.c: For shared methods of generic classes put the location
13416         of "this" into the MonoGenericJitInfo.
13417
13418         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13419         register out of a MonoContext by register number.  Add the generic
13420         sharing context as an argument to mono_arch_find_this_argument().
13421
13422         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13423         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13424         for new arch function.
13425
13426         * mini-exception.c: Handle open exception clauses in shared
13427         generic code.
13428
13429         * mini-trampolines.c: Supply additional argument to
13430         mono_arch_find_this_argument().
13431
13432 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13433
13434         * Makefile.am (regtests): Run the bench.exe tests last.
13435
13436 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13437
13438         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13439         a bit.
13440
13441 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13442
13443         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13444         with MS.
13445
13446         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13447         
13448         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13449
13450         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13451         whose class has no cctor.
13452
13453         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13454
13455 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13456
13457         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13458         unverified.
13459
13460 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13461
13462         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13463         to be in sync with the code on the linear IR branch.
13464
13465         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13466
13467         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13468
13469 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13470
13471         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13472
13473         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13474
13475         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13476
13477         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13478
13479         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13480         
13481         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13482         body.
13483
13484 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13485
13486         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13487         OP_LOADR4_MEMBASE emission.
13488
13489         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13490         (mono_spillvar_offset_float): Ditto.
13491
13492         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13493
13494         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13495         emission.
13496
13497         * basic-long.cs: Add regression tests for them.
13498
13499         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13500         use.
13501         (mono_arch_allocate_vars): Fix representation of single-precision float
13502         argument.
13503         (mono_arch_output_basic_block): Ditto.
13504
13505         * inssel-mips.brg: Ditto, remove duplicate items.
13506
13507         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13508         arguments of tail calls as on other platforms.
13509         (mono_arch_output_basic_block): Handle tail calls.
13510
13511         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13512         register.
13513
13514         * objects.cs (test_5_pass_static_struct): Add test for it.
13515
13516         Contributed under MIT/X11 license.
13517
13518 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13519
13520         * Makefile.am: Use gmcs for compiling the regression tests.
13521
13522         * *.2.cs *.2.il: Rename to *.cs and *.il.
13523
13524 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13525
13526         * regalloc.h: Make the vassign array smaller.
13527
13528         * mini.c (mini_method_compile): Remove an unused field in cfg.
13529
13530         * mini-codegen.c: Add a bunch of micro optimizations.
13531
13532 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13533
13534         * regalloc.h: Remove some unused fields.
13535
13536 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13537
13538         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13539
13540         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13541
13542 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13543
13544         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13545
13546         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13547         trampoline: Fetch an entry from the runtime generic context.  If
13548         it's NULL, jump to the actual trampoline to fill the runtime
13549         generic context.  Otherwise, return it.
13550
13551         * mini.c: Call the lazy fetch trampoline to get entries out of the
13552         runtime generic context.
13553
13554         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13555         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13556         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13557
13558 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13559
13560         * mini.c: Fetch data out of the extensible part of the runtime
13561         generic context instead of calling a helper function.
13562
13563         * generic-sharing.c: Some functions moved into
13564         metadata/generic-sharing.c.  Helper function for fetching other
13565         types now checks and asserts against extensible rgctx (just for
13566         debugging purposes - the helper function isn't called anymore
13567         unless for debugging).
13568
13569 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13570
13571         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13572         for tail calls up to the point that the tests in iltests.exe run. Also add a
13573         dummy CKFINITE implementation.
13574         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13575         needed for trampoline LMF frames.
13576
13577         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13578         trampoline LMF frames.
13579
13580 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13581
13582         * mini.c (inline_method): clean any pending loader error when inlining fail.
13583         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13584
13585 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13586
13587         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13588
13589         * aot-runtime.c (decode_patch_info): Ditto.
13590
13591         * mini.c (mono_resolve_patch_target): Ditto.
13592         
13593         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13594         icall wrappers.
13595
13596         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13597         
13598         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13599         if it references an icall address.
13600
13601 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13602
13603         * cpu-s390x.md: Remove some more unused opcodes.
13604         
13605         * cpu-s390x.md: Remove some unused opcodes.
13606
13607         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13608         mono_op_imm_to_op ().
13609
13610         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13611         instead of a switch statement.
13612         
13613         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13614         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13615
13616         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13617         
13618         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13619
13620         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13621         -1.
13622
13623 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13624
13625         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13626         opened. Fixes #362607.
13627
13628         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13629
13630         * iltests.il.in: Add a test for static methods in interfaces.
13631
13632 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13633
13634         * genmdesc.c (build_table): Fix a crash on older glib versions.
13635
13636         * cpu-sparc.md: Remove some unused opcodes.
13637         
13638         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13639         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13640
13641         * cpu-amd64.md: Remove some unused opcodes.
13642
13643         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13644         like the other opcodes.
13645
13646 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13647
13648         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13649
13650         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13651
13652         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13653         variables 'cfg' instead of 'm' for consistency.
13654
13655         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13656
13657         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13658         argument holding the vtype return address, to avoid the ambigious use of
13659         cfg->ret for this purpose.
13660
13661         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13662
13663         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13664         
13665         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13666         new mono_print_ins () function which only takes one argument.
13667
13668 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13669
13670         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13671         macro arguments.
13672
13673 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13674
13675         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13676
13677         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13678
13679         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13680         opcodes and other small changes.
13681
13682         * mini-ops.h: Add some new opcodes from the linear IR branch.
13683
13684         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13685
13686         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13687         opcodes, use the REG_MEMBASE opcodes instead.
13688         
13689         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13690         opcodes, use the REG_MEMBASE opcodes instead.
13691         
13692         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13693         linear IR branch.
13694
13695         * mini.c (mono_op_imm_to_op): New helper function.
13696
13697         * mini-ops.h: Add some opcodes from linear IR branch.
13698
13699 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13700
13701         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13702         <tsv@solvo.ru>.
13703
13704 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13705
13706         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13707         OP_ICONV_TO_R4/R8.
13708
13709         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13710
13711 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13712
13713         * aot-compiler.c (emit_method_code): Add an assert.
13714
13715         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13716         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13717         methods.
13718
13719 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13720
13721         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13722         some load/store opcodes so they are consistent. 
13723         (mono_arch_emit_prolog): Simplify some code.
13724
13725         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13726
13727         * objects.cs: Add tests for large argument offsets on ARM.
13728
13729         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13730         stack offsets. Fixes #359651.
13731
13732         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13733
13734         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13735
13736         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13737
13738         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13739
13740         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13741
13742         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13743         rid of CEE_CONV_R_UN.
13744
13745         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13746
13747 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13748
13749         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13750
13751         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13752
13753         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13754
13755         * cpu-amd64.md: Remove some unused opcodes.
13756
13757         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13758
13759         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13760
13761         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13762         arch specific functions for its parts. Call the peephole pass after local
13763         regalloc so the prolog can compute a more accurate max_offset.
13764         
13765         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13766         the corresponding OP_I/OP_L opcodes.
13767
13768         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13769
13770         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13771
13772 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13773
13774         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13775         as they are handled in mini.c.
13776
13777         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13778         
13779         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13780         case since it is handled in mini.c.
13781
13782         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13783
13784         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13785
13786         * *.c: Use the new opcodes in the IR and back end code.
13787
13788         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13789
13790         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13791
13792 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13793
13794         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13795         an assert because it has a race condition.
13796
13797 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13798
13799         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13800
13801         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13802
13803         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13804
13805         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13806         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13807
13808 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13809
13810         * cpu-amd64.md (move): Correct the maximum size of move.
13811
13812 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13813
13814         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13815         the generic class init trampoline to return quickly if the class
13816         is already inited.
13817
13818 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13819
13820         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13821         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13822
13823 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13824
13825         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13826         branch.
13827
13828 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13829
13830         * objects.cs: Add some soft-float tests.
13831
13832         * mini.c: Fix a couple more soft-float issues.
13833
13834         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13835
13836         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13837         avoid a REX prefix.
13838
13839 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13840
13841         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13842         exception happens while compiling a virtual method.
13843
13844 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13845
13846         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13847         
13848         * mini-sparc.c: Fix build.
13849
13850         * mini-sparc.c (get_call_info): Add support for generic sharing.
13851
13852         * mini-exceptions.c: Add a FIXME.
13853
13854 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13855
13856         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13857         altstack handling code.
13858
13859         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13860         
13861         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13862
13863         * mini-s390.c: Add support for generic sharing.
13864
13865         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13866         Fix CAS on s390.
13867         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13868
13869         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13870
13871         * mini-s390x.c: Add support for generic sharing.
13872         
13873         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13874         Fix CAS on ia64.
13875         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13876
13877         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13878         can be used since it takes a 16 bit signed immediate.
13879
13880         * inssel-s390x.brg: Fix OP_SETRET.
13881
13882         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13883
13884         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13885
13886         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13887
13888         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13889
13890         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13891         in one place.
13892
13893         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13894         stuff.
13895
13896         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13897         of the unused mono_arch_patch_delegate_trampoline stuff.
13898
13899 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13900
13901         * basic-long.cs: Move the fp related tests to basic-float.cs.
13902
13903         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13904
13905         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13906
13907         * basic-calls.cs: Add a test for proper float argument passing.
13908
13909         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13910         if the context corresponds to an exception received through a signal.
13911
13912         * exceptions.cs: Add a test for nullref handling at the start of a try
13913         clause.
13914
13915         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13916
13917         * jit-icalls.c (mono_break): New JIT icall.
13918
13919         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13920
13921         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13922
13923 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13924
13925         * cpu-*.md: Get rid of unused opcodes.
13926
13927         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13928
13929         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13930         by all platforms.
13931
13932         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13933         define.
13934
13935         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13936         the arch independent trampoline code in mini-trampolines.c.
13937
13938         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13939
13940         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13941
13942         * mini-s390.h: Remove an unused define.
13943         
13944         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13945         the arch independent trampoline code in mini-trampolines.c.
13946
13947         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13948
13949 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13950
13951         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13952
13953         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13954
13955         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13956
13957         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13958
13959         * cpu-amd64.md: Use smaller sizes for int opcodes.
13960
13961         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13962
13963         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13964         objects.cs.
13965
13966         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13967         debugging.
13968
13969         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13970         instead of though a pointer to save an indirection when accessing elements of
13971         the array.
13972
13973         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13974         some typos.
13975         (NOT_IMPLEMENTED): New helper macro.
13976         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13977         of a bb.
13978
13979         * *.c: Use the new helper macro.
13980
13981 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13982
13983         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13984
13985 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13986
13987         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13988         stack slots.
13989
13990 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13991
13992         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13993         profiling is enabled.
13994         
13995         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13996         the end.
13997         (mono_arch_emit_prolog): Add more first bblock optimizations.
13998
13999         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
14000         in order if possible.
14001         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
14002         bblock, since the arguments are still in their original registers.
14003
14004         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
14005
14006 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
14007
14008         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
14009         as well.
14010
14011         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
14012         offset 0.
14013
14014         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
14015
14016         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
14017         process async exceptions received while in unmanaged code.
14018
14019         * mini.c (mini_init): Install a callback with the runtime which will be called
14020         when a thread receives an async exception while in unmanaged code.
14021
14022         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
14023
14024         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
14025
14026 2008-01-16  Wade Berrier  <wberrier@novell.com>
14027
14028         * cpu-g4.md:
14029         * cpu-arm.md:
14030         * cpu-s390x.md:
14031         fix build
14032
14033 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
14034
14035         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
14036         compilation with sun cc.
14037
14038         * cpu-*.md: Fix the build.
14039
14040         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
14041
14042         * mini-amd64.h: Add some comments to the MonoLMF structure.
14043
14044         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
14045         
14046         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
14047         in the LMF structure if possible. This saves two instructions in the
14048         managed->native wrappers.
14049
14050         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
14051
14052 2008-01-16  Mark Probst  <mark.probst@gmail.com>
14053
14054         * generic-sharing.c: New type argument lookup code which uses the
14055         runtime generic context template.
14056
14057 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
14058
14059         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
14060
14061         * mini-arm.c (add_general): Fix arm eabi parameter passing.
14062         (mono_arch_output_basic_block): Fix localloc implementation.
14063
14064         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
14065
14066         * mini-ia64.c (peephole_pass): Fix ia64 build.
14067
14068         * mini-amd64.c (peephole_pass): Fix a warning.
14069         
14070         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
14071         at a constant offset from sp/fp.
14072
14073         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
14074         instead of obtaining it from *lmf in the managed method case.
14075
14076 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
14077
14078         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
14079
14080 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
14081
14082         * mini.h (MonoInstList): New type.
14083         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
14084         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
14085         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
14086         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
14087         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
14088         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
14089         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
14090         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
14091         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
14092         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
14093         MONO_INST_LIST_FOR_EACH_ENTRY,
14094         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
14095         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
14096         mono_inst_list_first, mono_inst_list_last,
14097         mono_inst_list_next, mono_inst_list_prev): New instruction
14098         list handling interfaces.
14099         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
14100         list head 'ins_list'.
14101         (MonoInst): Replace next pointer with list head 'node'.
14102         (MonoCallInst): Make 'out_args' a MonoInstList.
14103         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
14104         (MonoCompile): Delete reverse_inst_list and
14105         reverse_inst_list_len.
14106         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
14107         mono_arch_lowering_pass, mono_arch_local_regalloc,
14108         mono_arch_output_basic_block, mono_arch_emit_prolog):
14109         Convert to new instruction lists.
14110         (insert_after_ins): Delete.
14111         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
14112         instruction lists.
14113         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
14114         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
14115         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
14116         mono_emulate_opcode, mono_emit_load_got_addr,
14117         inline_method, mono_method_to_ir, mono_print_bb_code,
14118         print_dfn, decompose_pass, nullify_basic_block,
14119         replace_out_block_in_code, remove_block_if_useless,
14120         merge_basic_blocks, move_basic_block_to_end,
14121         try_unsigned_compare, optimize_branches, mono_print_code,
14122         mini_select_instructions, remove_critical_edges): Likewise.
14123         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
14124         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
14125         mono_arch_output_basic_block, mono_arch_emit_prolog):
14126         Likewise.
14127         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
14128         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14129         mono_arch_output_basic_block): Likewise.
14130         (inst_list_prepend, insert_after_ins): Delete.
14131         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
14132         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
14133         instruction lists.
14134         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
14135         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
14136         mono_arch_emit_prolog): Likewise.
14137         * cfold.c (mono_constant_fold): Likewise.
14138         * liveness.c (visit_bb, mono_analyze_liveness,
14139         optimize_initlocals): Likewise.
14140         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
14141         * graph.c (mono_draw_code_cfg): Likewise.
14142         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
14143         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
14144         mono_ssa_cprop): Likewise.
14145         * abcremoval (get_relations_from_previous_bb, process_block):
14146         Likewise.
14147         * local-propagation (mono_cprop_invalidate_values,
14148         mono_local_cprop_bb): Likewise.
14149         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
14150         peephole_pass, mono_arch_output_basic_block,
14151         mono_arch_emit_prolog): Likewise.
14152         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
14153         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14154         mono_arch_emit_prolog): Likewise.
14155         (insert_after_ins): Delete.
14156         * aliasing.c (print_code_with_aliasing_information,
14157         mono_build_aliasing_information, mono_aliasing_deadce):
14158         Convert to new instruction lists.
14159         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
14160         peephole_pass, NEW_INS, mono_arch_lowering_pass,
14161         mono_arch_local_regalloc, mono_arch_output_basic_block):
14162         Likewise.
14163         (insert_after_ins): Delete.
14164         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
14165         peephole_pass, mono_arch_output_basic_block): Convert to
14166         new instruction lists.
14167         * mini-codegen (InstList, inst_list_prepend,
14168         insert_after_ins): Delete.
14169         (insert_before_ins, get_register_force_spilling,
14170         get_register_spilling, free_up_ireg, free_up_reg,
14171         create_copy_ins, create_spilled_store, alloc_int_reg,
14172         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
14173         to new instruction lists.
14174         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
14175         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14176         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
14177         (insert_after_ins): Delete.
14178         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
14179         mono_arch_local_regalloc, mono_arch_output_basic_block,
14180         mono_arch_call_opcode): Convert to new instruction lists.
14181         (insert_after_ins): Delete.
14182         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
14183         peephole_pass, mono_arch_output_basic_block,
14184         mono_arch_emit_prolog): Convert to new instruction lists.
14185
14186 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
14187
14188         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
14189
14190         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
14191         Fixes #353182.
14192
14193         * Makefile.am (version.h): Make this work with non-bash shells.
14194
14195 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
14196
14197         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
14198
14199 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14200
14201         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
14202         the InitializeArray optimization.
14203
14204 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14205
14206         * mini.c driver.c: Don't include os/gc_wrapper.h.
14207
14208 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14209
14210         * mini.c (print_jit_stats): Print GC statistics if available.
14211
14212 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14213
14214         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14215
14216 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14217
14218         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14219
14220 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14221
14222         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14223         
14224         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14225
14226         * driver.c (mono_main): Ditto.
14227
14228 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14229
14230         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14231
14232         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14233         in the vtable can't be encoded.
14234         (compile_method): Ditto.
14235
14236 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14237
14238         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14239         defined.
14240
14241         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14242         lmf->rbp.
14243
14244         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14245         the top LMF entry belongs to the current method.
14246
14247         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14248
14249 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14250
14251         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14252         
14253         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14254
14255         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14256
14257         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14258
14259         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14260
14261         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14262         implementation.
14263
14264         * basic-float.cs: Add an ulong->double cast test.
14265
14266 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14267
14268         * mini.c (mono_method_to_ir): Fix a warning.
14269
14270 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14271
14272         * mini-ops.h: Add OP_SWITCH.
14273
14274         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14275         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14276
14277 2007-12-11  Geoff Norton  <gnorton@novell.com>
14278
14279         * mini-s390x.c: Minor change to the MAX() define to allow
14280         it to compile with other gcc versions.
14281
14282 2007-12-11  Geoff Norton  <gnorton@novell.com>
14283
14284         * cpu-s390x.md:
14285         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14286
14287 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14288
14289         exceptions-arm.c (mono_arch_get_restore_context): Restore
14290         the frame pointer.
14291
14292         exceptions-arm.c (throw_exception): Save the frame pointer.
14293         This is a partial fix for #323747. Only the client side is
14294         fixed.
14295
14296 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14297
14298         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14299         was using an unrelated variable to log the class which
14300         needed the cctor to be called. This was crashing on arm.
14301
14302 2007-12-09  Robert Jordan  <robertj@gmx.net>
14303
14304         * mini-x86.c (mono_arch_emit_epilog):
14305         Consider all kinds of 64-bit types. Fixes #323114.
14306
14307 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14308
14309         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14310
14311 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14312
14313         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14314
14315 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14316
14317         * mini.c: run type ctor before allocating an object, not only
14318         when running it's constructor method (fixes at least part of bug #342507).
14319
14320 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14321         
14322         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14323         
14324         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14325         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14326         function.
14327
14328         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14329         mono_generic_class_init_trampoline () the same as it is done with the other
14330         trampolines.
14331
14332         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14333         aot-runtime.c aot-compiler.c: Implement AOT support.    
14334
14335 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14336
14337         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14338         build for archs which don't have the vtable trampoline defined
14339         yet.
14340
14341 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14342
14343         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14344
14345         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14346
14347         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14348
14349         * tramp-<ARCH>.c: Use the new helper function.
14350
14351 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14352
14353         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14354         trampoline call, which takes a vtable argument.
14355
14356         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14357         OP_TRAMPCALL_VTABLEs like other calls.
14358
14359         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14360         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14361         call.  Implemented a support function which fetches the vtable
14362         from a register set.
14363
14364         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14365         Implemented a generic class init trampoline, using the
14366         OP_TRAMPCALL_VTABLE opcode.
14367
14368         * mini.c: Implemented static field access when sharing generic
14369         code.  This implies initing the class using the new
14370         OP_TRAMPCALL_VTABLE call.
14371
14372 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14373
14374         * mini.c: Don't compile methods with sharing enabled if their
14375         classes are disabled for sharing.
14376
14377 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14378
14379         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14380         opcodes. Fixes #346563.
14381
14382         * objects.cs: Add a new test.
14383
14384         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14385
14386         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14387         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14388
14389 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14390
14391         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14392
14393 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14394
14395         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14396         code stream.
14397
14398 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14399
14400         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14401
14402         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14403         optimization in the AOT case.
14404         
14405 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14406
14407         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14408         
14409         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14410
14411         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14412
14413         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14414
14415         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14416         is created by the inlined delegate ctor.
14417
14418         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14419
14420         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14421
14422 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14423
14424         * cpu-x86.md: Fix the length of ckfinite.
14425
14426 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14427
14428         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14429         
14430         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14431         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14432
14433         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14434
14435         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14436         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14437
14438 2007-11-28  Martin Baulig  <martin@ximian.com>
14439
14440         * mini-x86.c
14441         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14442         after creating the trampoline.
14443
14444 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14445
14446         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14447
14448         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14449         the same version.
14450
14451         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14452         instead of the calling method to help AOT.
14453
14454         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14455
14456 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14457
14458         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14459         is defined.
14460
14461 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14462
14463         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14464         
14465         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14466         (encode_method_ref): No need to handle generic method definitions specially.
14467
14468         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14469
14470         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14471         decode_klass_info.
14472
14473         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14474         encode_klass_info.
14475         (compile_method): Enable generic sharing.
14476
14477 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14478
14479         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14480         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14481
14482         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14483         generic code.
14484
14485         * mini-trampolines.c: Fix a warning.
14486
14487         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14488         NEW_PCONST.
14489         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14490         (generic_class_is_reference_type): Remove unused function.
14491
14492         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14493         in the generic vtable trampoline case.
14494
14495         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14496         
14497         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14498         return an AOT method based on a vtable slot.
14499
14500         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14501
14502         * mini.c (mini_get_vtable_trampoline): Export this.
14503
14504 2007-11-22  Martin Baulig  <martin@ximian.com>
14505
14506         * debug-debugger.h
14507         (MonoDebuggerInfo): Move `debugger_version' up.
14508
14509 2007-11-22  Martin Baulig  <martin@ximian.com>
14510
14511         * mini-amd64.c
14512         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14513
14514         * mini-trampolines.c
14515         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14516         after compiling the method.
14517
14518 2007-11-20  Martin Baulig  <martin@ximian.com>
14519
14520         * debug-mini.c
14521         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14522         (mono_debugger_remove_breakpoint): Likewise.
14523         (mono_debugger_check_breakpoints): Likewise.
14524
14525         * debug-debugger.c: Implement the new breakpoint interface here.
14526
14527 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14528
14529         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14530         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14531
14532         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14533
14534 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14535
14536         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14537
14538         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14539         mini.c.
14540
14541         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14542         mini.c.
14543
14544         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14545         returning a vtype in a register.
14546
14547         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14548         here from the arch specific code.
14549
14550         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14551         mini.c.
14552
14553         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14554         (mono_arch_emit_prolog): Increment maximum prolog size.
14555
14556         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14557         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14558
14559         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14560         MonoGenericSharingContext.
14561
14562         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14563         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14564
14565 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14566
14567         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14568         which extract fields out of the runtime generic context.  Full
14569         sharing of the NEWARR opcode.
14570
14571 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14572
14573         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14574         --enable-minimal=ssa.
14575
14576 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14577
14578         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14579         mono_marshal_get_delegate_invoke () signature change.
14580
14581 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14582
14583         * mini.c: Removed the shared context in favor of the generic
14584         sharing context.  Allocate the MonoJitInfo structure with room for
14585         the generic sharing context if it's needed.
14586
14587         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14588         domain-internals.h now.
14589
14590         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14591
14592         * generic-sharing.c: Several changes for working without a shared
14593         context and instead operating on open types instead.
14594
14595 2007-11-12  David S. Miller  <davem@davemloft.net>
14596
14597        * inssel-sparc.brg: Fix double instruction emit.
14598
14599 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14600
14601         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14602         Get/Set/Address methods.
14603         
14604         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14605         mono_marshal_get_delegate_invoke signature change.
14606
14607 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14608
14609         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14610         This can happens with dynamic methods. Fixes the other bug in #322722.
14611
14612 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14613
14614         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14615         BX call sequence.
14616
14617         * mini-arm.c (arm_patch): Implement patching of BX call
14618         sequence. Fixes one of the bugs in #322722.
14619
14620 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14621
14622        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14623        under Linux.  We only need to flush every 32-byte cache line.    
14624
14625 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14626
14627         * mini.c:
14628         move_basic_block_to_end: Add branches when needed, eventually creating
14629         a new BB.
14630         optimize_branches: added a parameter that tells if it's ok to create
14631         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14632         and avoid calling move_basic_block_to_end when it's not ok.
14633         Fixes bug 318677.
14634
14635 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14636
14637         * mini.c: Abort inlining call to InitializeArray if something
14638         looks wrong.  Let the icall handle it, which now has proper safety
14639         checks.
14640
14641 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14642
14643         * mini.c (mono_spill_call): add support for soft-float.
14644
14645         * mini.c (mono_method_to_ir): add support for soft-float
14646         to inlined functions that return float.
14647
14648         * mini.c (mono_method_to_ir): add support for soft-float
14649         to cee_stsfld opcode on float fields.
14650
14651 2007-11-05  Geoff Norton  <gnorton@novell.com>
14652
14653         * mini-x86.h: Fix the structure access for X86 Leopard.
14654
14655
14656 2007-11-05  Martin Baulig  <martin@ximian.com>
14657
14658         * mini-trampolines.c
14659         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14660         after compiling the method to notify the debugger.
14661
14662 2007-11-05  Martin Baulig  <martin@ximian.com>
14663
14664         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14665
14666 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14667
14668         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14669         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14670
14671 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14672
14673         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14674         native-to-managed wrappers.
14675         
14676 2007-11-01  Geoff Norton  <gnorton@novell.com>
14677
14678         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14679         members.
14680
14681 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14682
14683         * mini.c, mini-x86.c: when getting back from unmanaged code
14684         to managed via a marshaled delegate we also need to set the
14685         right domain.
14686
14687 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14688
14689         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14690         for amd64.
14691
14692 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14693
14694         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14695         let the debugger or other external agents to tell the JIT when
14696         a sw breakpoint has been inserted in the code that the JIT needs
14697         to be able to inspect.
14698
14699 2007-10-31  Martin Baulig  <martin@ximian.com>
14700
14701         * debug-debugger.h
14702         (MonoDebuggerInfo): Remove `runtime_class_init'.
14703
14704 2007-10-30  Martin Baulig  <martin@ximian.com>
14705
14706         * debug-mini.h
14707         (mono_debugger_thread_created): Added `MonoThread *' argument.
14708         (mono_debugger_extended_notification): New public method.
14709         (mono_debugger_trampoline_compiled): New public method.
14710
14711         * debug-mini.c
14712         (MonoDebuggerThreadInfo): Added `thread' and
14713         `extended_notifications' fields.
14714
14715         * debug-debugger.c
14716         (debugger_executable_code_buffer): New static variable.
14717
14718         * debug-debugger.h
14719         (MonoDebuggerInfo): Added `executable_code_buffer',
14720         `executable_code_buffer_size', `breakpoint_info_area',
14721         `breakpoint_table' and `breakpoint_table_size'.
14722
14723 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14724
14725         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14726         that IP  either is an unused value or the vtable pointer. IMT 
14727         calls use vtable + offset now. Reduced by almost half the size
14728         of IMT entries.
14729
14730 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14731
14732         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14733         defines to access param registers. Replace long usage with
14734         gsize as sizeof(long) != sizeof(void*) on Win64.
14735
14736         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14737         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14738         instead of non-existant _GetAddressOfReturnAddress.
14739
14740         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14741         param registers. Save/restore %rdi and %rsi in MonoLMF.
14742
14743         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14744         param registers. Modify (throw_exception) signature to take 
14745         %rdi and %rsi on Win64. 
14746
14747         Code is contributed under MIT/X11 license.
14748
14749 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14750
14751         * helpers.c: unlink debugging output files.
14752
14753 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14754
14755         * mini.c: Move mono_create_ftnptr () to object.c.
14756
14757 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14758
14759         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14760         optional. This function can now be used to disassemble code generated
14761         outside the JIT such as trampolines and IMT thunks.
14762
14763         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14764
14765         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14766         vtable pointer from a ldr instruction.
14767
14768         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14769         new IMT call sequence.
14770
14771         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14772         call sequence for interface invocations.
14773
14774         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14775         for imt support. This function is empty since IMT on ARM requires no
14776         special handling on the IR side.
14777
14778         * mini-arm.c (mono_arch_find_imt_method): added, required for
14779         imt support.
14780
14781         * mini-arm.c (mono_arch_find_this_argument): added, required
14782         for imt support.
14783
14784         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14785         a ldr instruction to load a value stored in the code stream.
14786
14787         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14788         for imt support.
14789
14790
14791 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14792
14793         * mini.c (mini_init): Install the jump trampoline callback.
14794
14795 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14796
14797         * mini-trampolines.c: handle synchronized methods with the common
14798         vtable trampoline (bug #335601).
14799
14800 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14801
14802         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14803
14804         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14805         64 bit platforms.
14806
14807         * mini-ia64.h mini-ia64.c: Add support for IMT.
14808
14809         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14810         prolog. Fixes #331958.
14811
14812 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14813
14814         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14815
14816 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14817
14818         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14819         trampoline.
14820
14821 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14822
14823         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14824         trampoline.
14825
14826 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14827
14828         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14829         trampoline.
14830
14831 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14832
14833         * mini-trampolines.c: changed the magic rampoline to understand
14834         the common vtable trampoline method: the method to invoke is
14835         determined by the vtable displacement of the call.
14836
14837 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14838
14839         * mini.c, mini.h: register the common vtable trampoline if the
14840         architecture supports it.
14841
14842 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14843
14844         * cpu-amd64.md: use the correct max length for tls_get.
14845
14846 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14847
14848         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14849         CEE_STELEM_ANY. Fixes #333696.
14850
14851 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14852
14853         * exceptions-x86.c: provide more graceful handling of the case where
14854         we followed a bogus function pointer from managed code (bug #332866).
14855
14856 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14857
14858         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14859         replaces the generic_shared flag and will carry more information
14860         in the future.
14861
14862         * generic-sharing.c: Added mini_type_stack_size() which allows
14863         allows open types if given a generic sharing context.
14864         mini_get_basic_type_from_generic() takes a
14865         MonoGenericSharingContext* instead of a MonoCompile* now.
14866
14867         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14868         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14869         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14870         changes above.  Just passing arguments through to the right
14871         places.
14872
14873 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14874
14875         * mini-arm.c: unify the call emission to emit_code_seq().
14876
14877 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14878
14879         * tramp-arm.c: reduced the trampoline size.
14880
14881 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14882
14883         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14884         variable handling out of arch-specific code.
14885
14886 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14887
14888         * mini-arm.c: implemented fast delegate dispatch.
14889
14890 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14891
14892         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14893         that fp elimination is turned off if the space required by locals is too
14894         big. Fixes #331958.
14895
14896 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14897
14898         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14899         ARM to the new style trampoline.
14900
14901 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14902
14903         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14904
14905         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14906
14907 2007-10-09  Martin Baulig  <martin@ximian.com>
14908
14909         * debug-debugger.h
14910         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14911         `field_info_offset_offset'.     
14912
14913 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14914
14915         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14916         removed more internal usage of the r11 register and made it available
14917         to the register allocator.
14918
14919 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14920
14921         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14922         when sharing generics and treat type variables as references.
14923
14924 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14925
14926         * mini-ppc.c: started removing the internal uses of register r11
14927         to eventually allow the register allocator to manage it as an
14928         additional available register.
14929
14930 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14931
14932         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14933
14934 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14935
14936         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14937         specific trampolines as they are not performance critical as a jump
14938         target (maybe align as before only for AOT code?). This saves about
14939         200 KB of native code on x86 for monodevelop startup.
14940
14941 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14942
14943         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14944         monodevelop startup.
14945
14946 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14947
14948         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14949
14950         * mini-sparc.h mini-sparc.c: Implement IMT support.
14951
14952         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14953         its smaller and doesn't clobber sparc_g1.
14954
14955         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14956
14957 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14958
14959         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14960
14961 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14962
14963         * mini-ppc.c: implemented fast delegate invocation.
14964
14965 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14966
14967         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14968
14969 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14970
14971         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14972         code to the new style trampoline in preparation for IMT support.
14973
14974 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14975
14976         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14977         systems already. This also reduces the specific trampiline sizes and
14978         prepares for the use of r12 as the IMT identifier register.
14979
14980 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14981
14982         * mini-mips.h: endianess fix (simplified from a patch by
14983         Thomas Kunze <thommy@tabao.de>, bug #323737).
14984
14985 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14986
14987         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14988         to access ucontext fields and enable netbsd support
14989         (partially from Magnus Henoch <mange@freemail.hu>).
14990
14991 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14992
14993         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14994         use the preprocessor from the CPP env var if it is set.
14995
14996 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14997
14998         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14999         code, before interface_offset gets used.
15000
15001 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
15002
15003         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
15004         mono_class_setup_vtable () before accessing klass->vtable.
15005
15006 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
15007
15008         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
15009         hackish.
15010
15011 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
15012
15013         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
15014         IMT slots (this saves hundreds of KB of memory in programs like
15015         IronPython and Monodevelop).
15016
15017 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15018
15019         * mini.c: print the delegate counter.
15020
15021 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
15022
15023         * mini-x86.c: make it easier to enable the debugging code for IMT
15024         slots.
15025
15026 2007-09-28  Martin Baulig  <martin@ximian.com>
15027
15028         * debug-debugger.h
15029         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
15030         `mono_method_klass_offset' and `mono_method_token_offset'.
15031
15032 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15033
15034         * mini.c: First generics sharing implementation.  Can only share
15035         in very simple cases.  If sharing doesn't work it falls back to
15036         dedicated compilation.
15037
15038         * mini.h: Flag in MonoCompile to specify whether generic
15039         compilation is shared.  Flags enum for marking which generic inst
15040         of a context is used.  Prototypes for helper functions.
15041
15042         * generic-sharing.c: Helper functions for generic method sharing.
15043
15044         * optflags-def.h: Optimization flag (gshared) for enabling generic
15045         method sharing added.
15046
15047         * Makefile.am: generic-sharing.c added.
15048
15049 2007-09-19 Daniel Nauck <dna@mono-project.de>
15050
15051         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
15052
15053 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
15054         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
15055         fixes bug 325507.
15056
15057 2007-09-19  Martin Baulig  <martin@ximian.com>
15058
15059         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
15060         mono_debug_cleanup() is now part of mono_cleanup().
15061
15062 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15063
15064         * driver.c (mono_main): Fix a warning.
15065
15066 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15067
15068         * aot-compiler.c: Optimize various parts when processing large assemblies.
15069         Fixes ##325568.
15070
15071         * mini.c (mono_patch_info_hash): Improve hash function.
15072
15073 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15074
15075         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
15076         
15077         Code is contributed under MIT/X11 license.
15078
15079 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15080
15081         * mini.c (mini_init): Fix a leak.
15082
15083         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
15084
15085 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15086
15087         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
15088
15089 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15090
15091         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
15092
15093 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15094
15095         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
15096         variance tests.
15097
15098         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
15099
15100         * mini.c (handle_alloc): Enable managed allocators in AOT code.
15101
15102         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
15103
15104         * aot-runtime.c (decode_patch_info): Ditto.
15105
15106 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15107
15108         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
15109         static case. Cache delegates in architecture specific code, 
15110         based on number of parameters.
15111         
15112         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
15113         in architecture specific code, based on number of parameters.
15114         
15115         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
15116         caching happen in architecture specific code now.
15117         
15118         Code is contributed under MIT/X11 license.
15119
15120 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15121
15122         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
15123         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
15124         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
15125
15126         Code is contributed under MIT/X11 license.
15127
15128 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15129         * mini.c: (mono_thread_abort) Fixed bug #82416.
15130
15131 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15132
15133         * mini.: hook the new managed GC allocation feature into the JIT.
15134
15135 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15136
15137         * mini.c: implementation for the new runtime tls opcode.
15138
15139 2007-09-11  Martin Baulig  <martin@ximian.com>
15140
15141         * debug-debugger.h
15142         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
15143         `mono_method_inflated_offset'.
15144
15145 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
15146
15147         * driver.c mini.h mini.c: Add a new devel command line option for injecting
15148         async exceptions into a method.
15149
15150         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
15151         purpose of testing whenever the unwinder works at every instruction.
15152
15153 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
15154
15155         * mini.c: check accessibility of method used in ldftn (fixes
15156         bug #82635).
15157
15158 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
15159
15160         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
15161
15162         * inssel.brg: Fix a warning.
15163
15164 2007-09-03  Martin Baulig  <martin@ximian.com>
15165
15166         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
15167         now takes the `main_method' as argument.
15168
15169 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
15170
15171         * cpu-sparc.md (endfilter): Add missing src1:i argument.
15172
15173 2007-08-30  Jonathan Chambers <joncham@gmail.com>
15174
15175         * driver.c: include the cil-coff.h header on Windows.
15176         
15177         Code is contributed under MIT/X11 license.
15178
15179 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15180
15181         * mini.c, driver.c: don't include the cil-coff.h header.
15182
15183 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15184
15185         * mini.c: flag places that needs fixes fo soft-float support.
15186
15187 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
15188
15189         * mini.h, inssel-float.brg: fix soft-float constant loads on big
15190         endian systems (partially from Dean Jenkins, bug #81924).
15191
15192 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15193
15194         * mini.c (check_linkdemand): Remove embedded reference object in
15195         call to LinkDemandSecurityException.
15196         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
15197         with an IntPtr instead of a reference object.
15198
15199 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15200
15201         * mini.c (handle_initobj): Handle alignment properly.
15202
15203         * inssel.brg (mini_emit_memset): Ditto. 
15204
15205         * inssel.brg (mini_emit_memcpy): Ditto. 
15206
15207         * inssel-sparc.brg: Ditto.              
15208
15209         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
15210
15211 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
15212
15213         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15214         exceptions raised in unmanaged code. Fixes part of #82594.
15215
15216 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15217
15218         * mini.c (mono_method_to_ir), declsec.c
15219         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15220
15221 2007-08-22  Martin Baulig  <martin@ximian.com>
15222
15223         * debug-mini.h
15224         (MonoDebuggerThreadInfo): New typedef.
15225         (mono_debugger_thread_table): New global variable.
15226         (mono_debugger_thread_created): New public function.
15227         (mono_debugger_thread_cleanup): New public function.
15228
15229         * debug-debugger.h
15230         (MonoDebuggerInfo):
15231         - removed `get_current_thread' and `lookup_assembly'.
15232         - removed `data_table'.
15233         - added `thread_table'.
15234
15235         * mini.c
15236         (mono_thread_start_cb): Call mono_debugger_thread_created().
15237         (mono_thread_attach_cb): Likewise.
15238         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15239         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15240         initial domain.
15241
15242         * driver.c (mono_main): Move mono_debug_init() up, before calling
15243         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15244
15245 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15246
15247         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15248         together when passing several arguments of type double (gives a small
15249         speedup and saves a few bytes of generated code).
15250
15251 2007-08-20  Jb Evain  <jbevain@novell.com>
15252
15253         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15254
15255 2007-08-20  Jb Evain  <jbevain@novell.com>
15256
15257         * mini.c (mono_method_to_ir): throw MethodAccessException
15258         and FieldAccessException instead of InvalidProgramException.
15259
15260 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15261
15262         * mini.c: CoreCLR security checks.
15263
15264         * mini.h: Removed MonoSecurityMode (moved to
15265         metadata/security-manager.h) and mono_security_mode global var
15266         (replaced by set/get functions in security-manager.h).
15267
15268         * driver.c: Added "core-clr-test" security mode for testing.  Used
15269         set-function for setting security mode.
15270
15271 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15272
15273         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15274         the new jit_info_table.
15275
15276         * driver.c: Test code for the new jit_info_table (enabled by the
15277         define MONO_JIT_INFO_TABLE_TEST).
15278
15279 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15280
15281         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15282         detection of call <REG> instruction sequence. Fixes build on freebsd.
15283
15284 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15285
15286         * mini-exceptions.c: Fix a warning.
15287
15288 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15289
15290         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15291         stack overflow handling code on amd64 too.
15292
15293         * mini-exceptions.c (mono_setup_altstack): Make this use 
15294         mono_thread_get_stack_bounds ().
15295
15296         * mini-x86.h: Disable sigaltstack on solaris x86.
15297
15298 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15299
15300         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15301
15302 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15303
15304         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15305
15306 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15307
15308         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15309
15310         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15311
15312 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15313
15314         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15315         due to alignment.
15316
15317 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15318
15319         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15320         to be emitted (bug #82281).
15321
15322 2007-08-01  Martin Baulig  <martin@ximian.com>
15323
15324         Merged the `debugger-dublin' branch.
15325
15326         * debug-debugger.h (MonoDebuggerInfo):
15327         Removed the `old_*' compatibility entries.
15328         Added `debugger_version' and `data_table'.
15329         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15330         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15331
15332         * debug-mini.c
15333         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15334         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15335         instead of a `gconstpointer'.
15336         (mono_debugger_insert_method_breakpoint): Return a
15337         `MonoDebugMethodAddressList *'.
15338
15339 2007-06-28  Martin Baulig  <martin@ximian.com>
15340
15341         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15342
15343 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15344
15345         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15346         __builtin_frame_address () since it is broken on older gcc versions.
15347
15348 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15349
15350         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15351         on the stack overflow handling and made the managed stack overflows
15352         catchable in most cases using soft guard pages.
15353         * exceptions-x86.c: added code to restore the protection in the soft
15354         guard pages at the end of exception handling.
15355
15356 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15357
15358         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15359
15360 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15361
15362         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15363         exception handling.
15364
15365 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15366
15367         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15368         signal handling support until it has been ported to the new mechanism.
15369         * mini.c: fixed stack overflow detection and use the new
15370         architecture code  to handle signals on the altstack.
15371
15372 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15373
15374         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15375         stack overflows on the alt stack.
15376
15377 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15378
15379         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15380         stack overflows on the alt stack.
15381
15382 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15383
15384         * exceptions-ppc.c: cleanup preparing for altstack support.
15385
15386 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15387
15388         * exceptions-arm.c: cleanup preparing for altstack support.
15389
15390 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15391
15392         * mini.c (print_jit_stats): Output hazard pointer stats.
15393
15394 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15395
15396         * driver.c, mini.c: Replaced security mode flags with a single
15397         enum variable.
15398
15399 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15400
15401         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15402
15403 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15404
15405         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15406         (which doesn't do anything yet) for activating Core CLR
15407         (Silverlight) security.
15408
15409 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15410
15411         * mini-codegen.c: work around a possible gcc bug on arm.
15412
15413 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15414
15415         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15416         message for platforms that don't support AOT compilation.
15417
15418 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15419
15420         * mini.h, mini.c, driver.c: temporary smcs hack.
15421
15422 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15423
15424         * mini-arm.h, mini-arm.c: arm EABI fixes.
15425
15426 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15427
15428         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15429         case.
15430
15431         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15432         trampolines taking a method argument.
15433
15434         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15435
15436         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15437         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15438
15439         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15440         JIT compilation throws an exception. Fixes #82050.
15441
15442 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15443
15444         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15445         with the MONO_EXCEPTION_ defines.
15446
15447 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15448
15449         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15450         #82117.
15451         
15452         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15453         the cause of an assertion.
15454
15455 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15456
15457         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15458         removed.
15459
15460 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15461
15462         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15463         assert. Should fix #82103.
15464
15465 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15466
15467         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15468         here too. Fixes #82095.
15469
15470         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15471         addresses.
15472
15473         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15474
15475         * mini-amd64.h: Enable IMT for amd64.
15476         
15477         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15478
15479 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15480
15481         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15482
15483 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15484
15485         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15486         as soon as check_linkdemand sets an exception_type.
15487
15488 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15489
15490         * mini-x86.c: fixed offsets for IMT call sequence.
15491         * mini-x86.h: enable IMT again.
15492
15493 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15494
15495         * trace.c (mono_trace_enter_method): Decode MonoType too.
15496
15497         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15498
15499         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15500
15501         * mini-amd64.c: Add preliminary IMT implementation.
15502         
15503 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15504
15505         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15506         understand the new IMT-base interface invocation (thanks to
15507         Daniel Nauck for the report and the remote debugging session).
15508
15509 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15510
15511         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15512
15513 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15514
15515         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15516
15517 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15518
15519         * mini-trampolines.c: implement AOT IMT support.
15520         * mini-x86.h: enable IMT support for wider testing.
15521
15522 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15523
15524         * inssel.brg (emit_imt_argument): Add aot support here.
15525
15526         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15527
15528 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15529
15530         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15531         of the IMT implementation, partially from massi, with my
15532         implementation of the bsearch sequence. Disabled by default until
15533         the AOT code is implemented.
15534
15535 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15536
15537         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15538
15539         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15540
15541 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15542
15543         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15544         arch-independent IMT JIT code from Massimiliano
15545         Mantione (massi@ximian.com) with small cleanups from me.
15546
15547 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15548
15549         * Makefile.am: fix svn invocation to get the svn revision to be
15550         independent of the local language (build fix).
15551
15552 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15553
15554         * mini.c (inline_method): Reset cfg->exception_type if the
15555         inlining is aborted.  Fixes: 82049.
15556
15557 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15558
15559         * mini.c: remove assert from exception handling code when exception_ptr
15560         is not set.
15561
15562 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15563
15564         * mini.c (mono_codegen): Add an assert.
15565
15566         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15567         enter and leave code.
15568         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15569
15570 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15571
15572         * mini-ppc.c: fixed memory corruption for localloc(0)
15573         (bug #81852).
15574
15575 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15576         
15577         * mini.c: Fix warnings.
15578
15579 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15580
15581         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15582         to emit better double->int conversions.
15583
15584 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15585
15586         * mini.c: the provided Min/Max optimizations are valid for unisgned
15587         ints.
15588
15589 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15590
15591         * 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
15592
15593 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15594
15595         * mini.c (mono_running_on_valgrind): Add support for reporting the
15596         method and  its boundaries to valgrind.
15597
15598 2007-06-28  Martin Baulig  <martin@ximian.com>
15599
15600         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15601
15602 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15603
15604         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15605
15606         * generic.2.cs: Add new test case.
15607
15608 2007-06-25  Martin Baulig  <martin@ximian.com>
15609
15610         Merged the `debugger-dublin' branch.
15611
15612         * debug-mini.c
15613         (mono_debugger_insert_method_breakpoint): New public method.
15614         (mono_debugger_remove_method_breakpoint): Likewise.
15615         (mono_debugger_check_breakpoints): New static method.
15616         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15617
15618         * debug-debugger.h (MonoDebuggerInfo):
15619         Renamed (to keep backward compatibility in the vtable):
15620         `insert_breakpoint' -> `old_insert_breakpoint'.
15621         `remove_breakpoint' -> `old_remove_breakpoint'.
15622         `create_string' -> `old_create_string'.
15623         `lookup_class' -> `old_lookup_class'.
15624         `lookup_type' -> removed; changed into a dummy field.
15625         `lookup_assembly' -> `old_lookup_assembly'.
15626         Added (same functionality, but different signature):
15627         `create_string', `lookup_class', `lookup_assembly'
15628         Added new:
15629         `get_method_addr_or_bpt', `remove_method_breakpoint',
15630         `runtime_class_init'.
15631
15632         * debug-debugger.c: Merged the `debugger-dublin' branch.
15633
15634 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15635
15636         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15637         well.
15638         (peephole_pass): Likewise.
15639
15640 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15641
15642         * driver.c: hopefully make setaffinity work also for ancient
15643         versions of linux.
15644
15645 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15646
15647         * driver.c : win32 build fix.
15648
15649 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15650
15651         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15652         processor if it is set.
15653
15654 2007-06-21  Martin Baulig  <martin@ximian.com>
15655
15656         * debug-mini.h: New file.
15657
15658         * debug-mini.c
15659         (mono_debugger_insert_breakpoint_full): Moved here from
15660         ../metadata/mono-debug-debugger.c.
15661         (mono_debugger_remove_breakpoint): Likewise.
15662         (mono_debugger_breakpoint_callback): Likewise.
15663
15664 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15665
15666         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15667         changes in MonoGenericClass.
15668
15669 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15670
15671         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15672
15673 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15674
15675         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15676         removal of MonoGenericMethod.
15677
15678 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15679
15680         * mini-exceptions.c: hooks for the exception events profiling API.
15681
15682 2007-06-14  Randolph Chung  <tausq@debian.org>
15683
15684         * Makefile.ma: Add hppa target.
15685         * mini-arch.h: Include mini-hppa.h
15686         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15687         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15688         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15689
15690 2007-06-14  Randolph Chung  <tausq@debian.org>
15691
15692         * inssel.brg: Add rules for "chained" compare-branch operations so that
15693         a single compare op can affect multiple branches.  Adjust cost for
15694         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15695         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15696         cost for some rules so that they can more easily be overridden by
15697         per-arch rules (with fixes from lupus).
15698         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15699
15700 2007-06-13  Randolph Chung  <tausq@debian.org>
15701
15702         * mini-ops.h: Reorder branch ops so that they match the order of the
15703         corresponding CEE_* ops.  The code expects them this way.
15704         Add new ops for HPPA target.
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-exceptions.c: Handle cases where the stack grows towards
15710         larger addresses.
15711         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15712
15713 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15714
15715         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15716         counter.
15717         * driver.c: explain where a non-matching corlib is found.
15718
15719 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15720
15721         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15722
15723 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15724
15725         * mini-exceptions.c: Generate a method profile leave event during
15726         an exception to ensure that the profiler gets notified.
15727
15728 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15729
15730         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15731         branch.
15732
15733         * cpu-amd64.md: Add long_and/or/xor opcodes.
15734
15735 2007-06-06  Wade Berrier  <wberrier@novell.com>
15736
15737         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15738         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15739         length of instruction shr_imm (expected 8, got 10)
15740
15741 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15742
15743         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15744
15745 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15746
15747         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15748         MonoInternalHashTable again (fixed bug in the internal hash table
15749         code).
15750
15751 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15752
15753         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15754         Have to figure out what makes it crash the SWF regression.
15755
15756 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15757
15758         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15759
15760 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15761
15762         * mini.c: optimize out the type check when storing null in a
15763         reference array.
15764
15765 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15766
15767         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15768         MonoInternalHashTable.
15769
15770 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15771
15772         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15773         signed integer methods.
15774
15775 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15776
15777         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15778         permanently since the current approach doesn't work.
15779
15780 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15781
15782         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15783         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15784
15785 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15786
15787         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15788         the sreg2==rdx case.
15789         
15790         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15791         account if it contains a rex prefix.
15792         (peephole_pass): Handle OP_FMOVE as well.
15793
15794 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15795
15796         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15797         as it causes regressions.
15798
15799 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15800
15801         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15802         static case as well.
15803
15804         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15805
15806         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15807         (mono_arch_get_this_arg_from_call): Ditto.
15808
15809         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15810
15811         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15812         invoke_impl field.
15813
15814         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15815         (mono_arch_get_this_arg_from_call): Ditto.
15816
15817         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15818         
15819         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15820         try to create optimized invoke code and use that for further invocations. 
15821         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15822
15823         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15824
15825 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15826
15827         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15828         sealed classes or methods.
15829         *devirtualization.cs: tests for the new optimization
15830
15831 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15832
15833         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15834         by the update_volatile () function.
15835
15836 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15837
15838         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15839         require it.
15840
15841         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15842
15843 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15844
15845         * mini.c: Add configure checks for header files.
15846         * mini-x86.c: Add configure checks for header files.
15847         * trace.c: Add configure checks for header files.
15848         * aot-runtime.c: Add configure checks for header files.
15849         * aot-compiler.c: Add configure checks for header files.
15850         * driver.c: Add configure checks for header files.
15851         * mini-codegen.c: Add configure checks for header files.
15852         
15853         Code is contributed under MIT/X11 license.
15854
15855 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15856
15857         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15858         icompare_imm -128 + op_iclt. Fixes #81703.
15859
15860 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15861
15862         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15863
15864 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15865
15866         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15867         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15868         so that all isinst checks now use "interface_bitmap".
15869
15870 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15871
15872         * cpu-amd64.md (jmp): Fix a warning.
15873
15874         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15875
15876         * basic.cs: Add new regression test.
15877
15878         * basic.cs: Remove test which is now in basic-long.cs.
15879
15880         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15881
15882         * basic-long.cs: Add new test.
15883         
15884 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15885
15886         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15887
15888 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15889
15890         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15891
15892         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15893         places.
15894         
15895         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15896         throwing code a bit.
15897
15898         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15899         the exception throwing code a bit.
15900
15901         * mini-x86.c (get_call_info): Allocate result from a mempool.
15902
15903 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15904
15905         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15906
15907         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15908
15909         * mini.h (MonoCompile): Add 'token_info_hash' field.
15910
15911         * mini.c: Save token->method associations during compilation so the AOT 
15912         compiler can use it.
15913         
15914         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15915         which reference generic classes and methods.
15916
15917 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15918
15919         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15920
15921         * aot-compiler.c (compile_method): Fix a typo in a comment.
15922
15923         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15924
15925         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15926         everything generic.
15927
15928         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15929
15930 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15931
15932         * mini.h (MonoCompile): Add 'args' field.
15933
15934         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15935         into cfg->args.
15936
15937         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15938
15939 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15940
15941         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15942
15943         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15944
15945         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15946         opcodes for some opcodes.
15947
15948         * mini.h *.brg *.c: Use the new opcodes.
15949
15950 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15951
15952         * mini.h: Bumped aot revision.
15953
15954         * inssel.brg: modified code generation of type checks for interfaces
15955         to use the new "MonoClass.interface_bitmap" instead of the old
15956         "MonoClass.interface_offsets".
15957
15958 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15959
15960         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15961
15962 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15963
15964         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15965         64 bit platforms.
15966
15967 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15968
15969         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15970
15971 2007-04-27  Wade Berrier  <wberrier@novell.com>
15972
15973         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15974         mini.h) to fix build.
15975
15976 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15977
15978         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15979         
15980         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15981         causes the corlib unit tests to fail.
15982
15983 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15984
15985         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15986
15987         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15988
15989         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15990         opcodes to the comparison relations.
15991
15992         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15993         opcodes to their types.
15994         
15995         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15996
15997         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15998         it in cfg->arch.cinfo.
15999
16000         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
16001
16002         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
16003         cfg->cil_offset_to_bb.
16004
16005 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
16006
16007         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
16008         created becase of initlocals.
16009
16010 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
16011
16012         * mini-alpha.c cpu-alpha.md: More alpha port work from 
16013         Sergey Tikhonov <tsv@solvo.ru>.
16014
16015 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
16016
16017         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
16018
16019 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
16020
16021         * cpu-s390.md (break): Correct the length of break instruction.
16022
16023 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
16024
16025         * mini.c: fix a couple of soft-float issues and comments.
16026
16027 2007-04-15  Miguel de Icaza  <miguel@novell.com>
16028
16029         * trace.c (is_filenamechar): - is also a filename char.
16030
16031 2007-04-15  Neale Ferguson <neale@sinenomine.net>
16032
16033         * mini-s390.c: Correct checking for enum type in return value processing.
16034
16035 2007-04-14  Raja R Harinath  <rharinath@novell.com>
16036
16037         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
16038         (version.h): Makefile is in the build directory.
16039
16040 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
16041
16042         * mini-amd64.h: fix for assertion failure on Solaris/amd64
16043
16044 2007-04-11  Martin Baulig  <martin@ximian.com>
16045
16046         * mini.c (can_access_member): Fix handling of generic classes;
16047         fixes #81259.
16048
16049 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
16050
16051         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
16052
16053 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
16054
16055         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
16056
16057 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16058
16059         * mini-codegen.c: make sure the right spill amount is
16060         used for fp or integer registers (fixes the float_sub_spill() on ppc).
16061
16062 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
16063
16064         * mini-ppc.c: fixes for the fp_branch_nan test.
16065
16066 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
16067
16068         * basic.cs: Comment out new test which still fails on ia64.
16069
16070 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
16071
16072         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
16073
16074 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16075
16076         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
16077
16078 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
16079
16080         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
16081         on 64 bit machines. Fixes part of #80738.
16082
16083         * basic.cs: Add regression test.
16084
16085 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
16086
16087         * inssel.brg basic.cs: Revert previous change to fix build.
16088
16089         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
16090         platforms.
16091         
16092         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
16093
16094         * basic.cs: Add new regression test.
16095
16096 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
16097
16098         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
16099         many arguments.
16100
16101 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16102
16103         * cpu-s390x.md: Correct length of break instruction.
16104
16105 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16106
16107         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
16108         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
16109
16110 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
16111
16112         * *.c: Begin WIN64 port.
16113         * mini.c:  Use correct register in profiler.
16114         * mini-amd64.c: No inline assembly on Win64.
16115         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
16116         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
16117         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
16118         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
16119         mono_arch_ip_from_context for Win64.
16120         
16121         Contributed under MIT/X11 license.
16122
16123 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
16124
16125         * exceptions-amd64.c (seh_handler): Ditto.
16126
16127         * exceptions-x86.c (seh_handler): Fix a memory leak.
16128
16129 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
16130
16131         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
16132         mini-s390x.c: fixed peephole optimizations to deal
16133         correctly with 1 and 2 byte reload avoidance.
16134
16135 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
16136
16137         * cpu-s390.md, cpu-s390x.md: update localloc length.
16138
16139 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16140
16141         * cpu-g4.md: added missing descriptions.
16142
16143 2007-03-14  Miguel de Icaza  <miguel@novell.com>
16144
16145         *  Makefile.am: Add support so the tail tests are not executed on
16146         PowerPC as that is a known limitation of the PowerPC port.
16147
16148 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16149
16150         * runmdesc.bat:  Move to msvc directory.
16151         
16152 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16153
16154         * runmdesc.bat:  Run executable that was produced by the current
16155         target and sent via an argument.
16156         
16157 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
16158
16159         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
16160         #81102.
16161
16162         * generics.2.cs: Add regression test.
16163
16164 2007-03-09  Wade berrier  <wberrier@novell.com>
16165
16166         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
16167
16168 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
16169
16170         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
16171         AOT code depends on this.
16172
16173 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16174
16175         * mini.c: more precise tracking of types in the eval stack
16176         (part of fix for bug #81044).
16177
16178 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
16179
16180         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
16181
16182         * aot-compiler.c (encode_patch): Remove an obsolete comment.
16183
16184 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16185
16186         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
16187
16188         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
16189
16190 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
16191
16192         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
16193         a pointer on 64 bit systems. Fixes #80190.
16194
16195         * iltests.il: Add new regression test.
16196
16197 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16198
16199         * mini.c: inline a constant for Environment.IsRunningOnWindows.
16200
16201 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
16202
16203         * trace.c: Remove an erroneous alignemnt check when tracing.
16204           Fixes --trace on OSX86.
16205
16206 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16207
16208         * mini-$(arch).h: initialize SP in context for all the archs.
16209
16210 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
16211
16212         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16213         regressions in the thread tests.
16214
16215 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16216
16217         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16218         - fixed implementation of LOCALLOC opcode
16219         - implemented non-un compare for floats
16220         - code cleanup
16221         - implementation of FDIV and CKFINITE opcodes
16222         - fixes for latest mono updates
16223         - additional arch opcodes
16224
16225 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16226
16227         * Makefile.am: simplify and merge rules for cross-compilation.
16228
16229 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16230
16231         * local-propagation.c: Actually *apply* the fix for bug 80591...
16232
16233 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16234
16235         * mini-exceptions.c: backuot part of the last change
16236         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16237
16238 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16239         * inssel.brg: Fix bug 59286.
16240
16241
16242 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16243
16244         * mini-exceptions.c: patch from Zoltan to correctly check for
16245         stack boundaries (using the stack register, not the frame register),
16246         fixes bugs #80724, #79717.
16247
16248 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16249
16250         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16251         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16252
16253         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16254         presence of frame pointer elimination.
16255
16256 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16257         
16258         * mini-x86.h: NetBSD UCONTEX_REG defines.
16259
16260 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16261
16262         * inssel-amd64.brg: Fix amd64 build.
16263
16264 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16265
16266         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16267         on amd64.
16268
16269 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16270
16271         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16272         ends.
16273
16274         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16275
16276 2007-01-30 Mark Mason <mason@broadcom.com>
16277
16278            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16279            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16280            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16281            beginning support for CEE_JMP [not quite working yet]
16282            * tramp-mips.c: LMF handling now works
16283         
16284 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16285
16286         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16287
16288         * mini.h (NULLIFY_INS): New macro.
16289
16290 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16291
16292         * mini.c: statistical profiler fix for windows, patch
16293         from Tor Lillqvist (tml@novell.com).
16294
16295 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16296         * local-propagation.c: Fix bug 80591.
16297
16298 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16299
16300         * Makefile.am: put back the --export-dynamic option as with
16301         the previous gmodule flags (thanks to Robert Jordan).
16302
16303 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16304
16305         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16306
16307         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16308         simplify and speed up the local register allocator. Also rename some fields
16309         like iassign->vassign.
16310         
16311         * regalloc.c: Remove some functions which are no longer used since their
16312         inlined version is in mini-codegen.c.
16313         
16314         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16315
16316         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16317
16318 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16319
16320         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16321         narrowing. Fixes #80622.
16322
16323         * iltests.il: Add new regresssion test. 
16324
16325 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16326
16327         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16328         debug-debugger.c, debug-debugger.h: warning fixes.
16329         * driver.c: updated copyright year and made it fit in one line.
16330
16331 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16332
16333         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16334
16335 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16336
16337         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16338
16339         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16340
16341         * iltests.il: Add new test for bug #80507.
16342
16343 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16344
16345         * mini-arm.h: use soft-float also on vfp for now.
16346
16347 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16348
16349         * mini.c: fix some more soft-float issues.
16350
16351 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16352
16353         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16354
16355 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16356         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16357         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16358         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16359
16360 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16361
16362         * mini-arm.c: typo fix.
16363
16364 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16365
16366         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16367
16368 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16369
16370         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16371         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16372
16373         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16374
16375         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16376
16377         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16378         
16379         * inssel.brg: Fix a warning.
16380
16381         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16382
16383         * abcremoval.c ssa.c ssapre.c: Update after this change.
16384         
16385         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16386
16387         * dominators.c (df_set): Use mono_bitset_union_fast.    
16388
16389 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16390
16391         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16392         mini-codegen.c: reduce relocations and memory usage for the cpu
16393         description.
16394
16395 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16396
16397         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16398
16399         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16400         to reduce their size.
16401
16402 2007-01-19 Mark Mason <mason@broadcom.com>
16403
16404         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16405         * mini-mips.c: more configuration macros, support long conditional branches, additional
16406         asserts, fix epilog instrumentation.
16407         * mini-mips.h: use standard stack walk
16408         * cpu-mips.md: increase size of div, rem and conditional branches
16409         
16410 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16411
16412         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16413         to cpu spec data.
16414
16415 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16416
16417         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16418         (compile_method): Ditto.
16419
16420         * aot-runtime.c (decode_klass_info): Ditto.
16421
16422         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16423         needed by the code generated by inssel.brg. Also fix a warning.
16424
16425 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16426
16427         * mini.c: deal with enums that become genericinsts by
16428         being nested in a generic class (bug #79956).
16429
16430 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16431
16432         * mini.c: match the generic definition to check for
16433         private access with generic types (bug #78431).
16434
16435 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16436
16437         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16438         to make life easier for people cross-compiling that insist on not
16439         using scratchbox.
16440
16441 2007-01-17 Mark Mason <mason@broadcom.com>
16442
16443         * inssel-long.brg: patch to deal with mips missing flags
16444         * inssel-long32-mips.brg: implement overflow checks
16445         * insset-mips.brg: implement overflow checks
16446         * mini-mips.h: implement conditional exception handling
16447         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16448           Remove unused code, minor cleanups.
16449         * exceptions-mips.c: minor cleanups
16450         * mini-ops.h: add mips conditional exception ops
16451         * cpu-mips.md: add mips conditional exception ops
16452
16453         
16454 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16455
16456         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16457         to deal with mips missing of flags.
16458
16459 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16460
16461         * exceptions-ppc.c: execute fault handlers.
16462
16463 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16464
16465         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16466
16467 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16468
16469         * mini.c: handle also floating point values in initialize_array.
16470
16471 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16472
16473         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16474         array initialization and make it conditional on the intrins option.
16475
16476 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16477
16478         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16479         relocations and put the patch info names close to the enum definition.
16480
16481 2007-01-15 Mark Mason <mason@broadcom.com>
16482
16483         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16484
16485 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16486
16487         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16488
16489 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16490
16491         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16492
16493 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16494
16495         * Makefile.am: distribute the mips sources.
16496
16497 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16498
16499         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16500         directly.
16501
16502 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16503
16504         * cpu-x86.md: back out for now as this triggers other regressions.
16505
16506 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16507
16508         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16509         to eax:edx, so ecx can't get allocated to them (bug #80489).
16510
16511 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16512
16513         * mini.c, mini-exceptions.c: enabled running fault handlers
16514         (bug #80469).
16515
16516 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16517
16518         * driver.c: If nothing fail, do not use the string "failed",
16519         because it makes it very annoying to view test result logs on the
16520         web. 
16521
16522 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16523
16524         * debug-debugger.c (mono_debugger_main): Rename "main" to
16525         "main_method" to prevent a warning.
16526
16527         Remove a warning for unused field.
16528
16529 2006-12-28  Martin Baulig  <martin@ximian.com>
16530
16531         * debug-debugger.c
16532         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16533
16534 2006-12-22  Martin Baulig  <martin@ximian.com>
16535
16536         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16537         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16538         seperate `.mdb_debug_info' section, so we can access it from the
16539         debugger even if the binary is stripped.
16540
16541         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16542         from the `.mdb_debug_info' here to prevent the linker from
16543         removing that section.
16544
16545         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16546         mdb-debug-info64.s.
16547
16548 2006-12-19  Robert Jordan  <robertj@gmx.net>
16549
16550         * mini-x86: enable the code to return small structures in
16551         registers for FreeBSD as well. Fixes bug #80278.
16552         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16553
16554 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16555
16556         * mini-x86.c: align the stack when calling the profiler
16557         function instrumenting the prolog (on OSX).
16558
16559 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16560
16561         * mini.c: emit a break opcode where Debugger.Break () is called.
16562
16563 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16564
16565         * mini.c (mono_method_to_ir): Provide useful information on this
16566         assert, to prevent others from debugging like I did.
16567
16568 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16569
16570         * mini.c: enable code which was incorrectly commented
16571         (bug #80235).
16572
16573 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16574
16575         * mini-x86.c: enable on OSX, too, the code to return small
16576         structures in registers.
16577
16578 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16579
16580         * mini-x86.c: remove the use of the dynamic code manager here, too.
16581
16582 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16583
16584         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16585         mono_debugger_create_notification_function() to use
16586         mono_global_codeman_reserve () instead of a dynamic code manager.
16587
16588 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16589
16590         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16591         ves_array_element_address() jit icall and use a generated
16592         managed method instead (which is about 4 times faster for a rank 3
16593         array access).
16594
16595 2006-11-29  Mark Mason  <mason@broadcom.com>
16596
16597         * basic-calls.cs: additional tests for passing
16598         structures as function arguments.
16599
16600 2006-11-29  Mark Mason  <mason@broadcom.com>
16601
16602         * mini-mips.h: disable custom exception handling
16603         * mini-mips.c: throw/rethrow should use jalr to call
16604         exception stubs.  Fixed bug with passing structures
16605         by value. More support for tracing floating point
16606         functions.
16607
16608 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16609
16610         * mini.c: fixed typo in the soft-float ldind.r4 handling
16611         (bug #80086).
16612
16613 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16614
16615         * mini.c, mini.h, driver.c: added --runtime command line
16616         option to select a different runtime than the autodetected one.
16617         * jit.h: added API for embedders to initialize with a specific
16618         runtime version.
16619
16620 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16621
16622         * mini.c: handle also boxing of r4 values (bug #80024).
16623
16624 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16625
16626         * mini-ppc.c: force indirect calls until we reserve
16627         enough address space for all the generated code.
16628
16629 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16630
16631         * exceptions-arm.c: workaround bugs in the libc definition
16632         of struct ucontext.
16633
16634 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16635
16636         * inssel.brg: fixes from me and Mark Mason.
16637
16638 2006-11-23  Dick Porter  <dick@ximian.com>
16639
16640         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16641         semaphore display now we've fixed the initial value
16642
16643 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16644
16645         * inssel.brg: partially revert the last change to fix the build.
16646
16647 2006-11-21  Mark Mason  <mason@broadcom.com>
16648
16649         * inssel.brg: Add and use compare-and-branch macros to support
16650         architectures that do not have condition code registers (ie. MIPS).
16651         * *-mips.{c,brg,md}: Fix copyright statements
16652
16653 2006-11-20  Mark Mason  <mason@broadcom.com>
16654
16655         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16656         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16657         * mini.h: Added declaration for mono_print_ins()
16658         * mini-codegen.c: added ins_spec initializer for MIPS
16659         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16660         vreg to be virtual and hreg to be non-virtual.
16661         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16662         is not yet working/implemented correctly.
16663         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16664         non-static, fixup calls to print_ins() from other parts in the file.
16665
16666 2006-11-20  Mark Mason  <mason@broadcom.com>
16667
16668         * basic-calls.cs: added tests for passing structures as arguments
16669         to calls.
16670
16671 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16672
16673         * inssel-long32.brg: optimize signed division by power of two.
16674
16675 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16676
16677         * mini-arm.c: added support for interworking with thumb code
16678         (mono must be still be built using the ARM instruction encoding).
16679
16680 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16681
16682         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16683         verifier has different rules for it.   Fixes a few verifier issues
16684         in the test suite.
16685
16686         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16687         at the end, so people know what happened.
16688
16689 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16690
16691         * brach-opts.c: in optimize_exception_target() make sure we
16692         are in a catch clause (fixes bug #79871).
16693
16694 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16695
16696         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16697         more soft-float support fixes.
16698
16699 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16700
16701         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16702         that are passed half on the stack and half in registers.
16703
16704 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16705
16706         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16707         more mips integration work from Mark E Mason 
16708         <mark.e.mason@broadcom.com>.
16709
16710 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16711
16712         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16713         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16714         tramp-mips.c: added sources for the mips port, not
16715         integrated in the build yet. Contributed by
16716         Mark E Mason <mark.e.mason@broadcom.com>.
16717
16718 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16719
16720         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16721
16722 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16723
16724         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16725         put the soft-float rules in its own file since it seems to
16726         break s390 compilation.
16727
16728 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16729
16730         * mini-arm.c: fixed wrnings.
16731
16732 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16733
16734         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16735         inssel-arm.brg: ARM support for soft-float.
16736
16737 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16738
16739         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16740         loads and stores of 32 bit fp values.
16741
16742 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16743
16744         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16745
16746         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16747         works. Fixes #79852 and #79463.
16748
16749 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16750
16751         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16752         more soft-float support WIP and fixes.
16753
16754 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16755
16756         * mini-arm.c: some VFP updates.
16757
16758 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16759
16760         * mini-exceptions.c: 0 is a valid local var offset in some
16761         architectures, don't assert (bug #78508).
16762
16763 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16764
16765         * exceptions-arm.c: fixed off by one error in stack walk code.
16766
16767 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16768
16769         * mini.h, mini.c: more precise tracking of type load exceptions.
16770
16771 2006-11-03  Robert Jordan  <robertj@gmx.net>
16772
16773         * Makefile.am: [WIN32] Add monow.exe target.
16774         * driver.c: [WIN32] Don't detach the console when debugging.
16775         Fixes bug #79797.
16776         
16777 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16778
16779         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16780
16781 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16782
16783         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16784
16785         * driver.c (mini_regression): Fix --regression with AOT.
16786
16787         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16788
16789 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16790
16791         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16792
16793         * mini-sparc.h: Don't use sigaction on sparc/linux.
16794
16795         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16796
16797         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16798
16799         * mini-exceptions.c: Add proper include files for getpid ().
16800
16801 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16802
16803         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16804         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16805         method.
16806
16807         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16808         name cache to reduce its size.
16809
16810         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16811
16812 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16813
16814         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16815         the mono_lmf TLS variable.
16816
16817         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16818         trampoline lmf frames.  
16819
16820         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16821
16822 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16823
16824         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16825         the mono_lmf TLS variable.
16826
16827         * mini-exceptions.c: Access the LMF structure through accessors.
16828
16829         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16830         variable instead of in jit_tls->lmf.
16831
16832         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16833         
16834         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16835         trampoline lmf frames.
16836
16837         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16838
16839 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16840
16841        * mini.c trace.c mini-x86.c: Revert these too.
16842         
16843        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16844        signature change.
16845
16846 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16847
16848         * genmdesc.c: removed now dead code.
16849
16850 2006-10-09  Robert Jordan <robertj@gmx.net>
16851
16852         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16853
16854 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16855
16856         * mini.h: do not leave gaps in the opcode values.
16857
16858 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16859
16860         * jit-icalls.h: flag functions as internal here, too.
16861
16862 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16863
16864         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16865         functions with the internal attribute.
16866
16867 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16868
16869         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16870
16871 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16872
16873         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16874         for soft-float.
16875
16876 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16877
16878         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16879         tail calls as on other platforms.
16880
16881         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16882
16883         * iltests.il: Add a few tailcall tests.
16884
16885 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16886
16887         * driver.c: fix loop for old compilers (bug #79521).
16888
16889 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16890
16891         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16892
16893         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16894
16895         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16896         metadata without any code.
16897
16898         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16899         more precise debugging information using gdb.
16900
16901 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16902
16903         * inssel-ia64.brg: Make the helper methods static.
16904
16905 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16906
16907         * inssel-x86.brg: make the helper methods static.
16908
16909 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16910
16911         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16912
16913 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16914
16915         * mini.c: updates for monoburg changes.
16916         * inssel.brg: make a few helper functions static as they should.
16917
16918 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16919
16920         * Makefile.am: Move mini-codegen.c to common_sources.
16921
16922 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16923
16924         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16925         instructions.
16926         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16927         mini-ppc.h: port to use the common local register allocator.
16928
16929 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16930
16931         * mini.h: Remove the comment too then.
16932
16933 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16934
16935         * mini.h: put back backend.data which is to be used shortly and
16936         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16937         pointers on 4 byte boundaries it'd have much bigger issues running
16938         and you can ifdef it out anyway.
16939
16940 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16941
16942         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16943         MonoInst size by 4 bytes on 64 bit machines.
16944
16945 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16946
16947         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16948         replacement with more meaningful field names. Arch maintainers, please
16949         check the assigned names are good enough for your arch.
16950
16951 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16952
16953         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16954         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16955
16956 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16957
16958         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16959         relocations and memory requirements, put the optimization flags
16960         definitions in their own file.
16961
16962 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16963
16964         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16965
16966         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16967
16968 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16969
16970         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16971
16972 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16973
16974         * inssel.brg: use the correct function to get the size of an item
16975         in an array, given an element class.
16976         * aot-compiler.c: do not access class->class_size directly.
16977
16978 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16979
16980         * mini.h, debug-mini.c: added a debugging function to print
16981         info about local variables and arguments in a jitted method.
16982
16983 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16984
16985         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16986
16987         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16988
16989 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16990
16991         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16992         inner and outer loops when passing vtypes.
16993
16994 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16995
16996         * mini-ppc.c: take into account the cpu errata for cache flushing
16997         which caused some random errors (bug #79381).
16998
16999 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
17000
17001         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
17002         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
17003
17004 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
17005
17006         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
17007         loaded.
17008
17009         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
17010         freebsd ports tree.
17011
17012         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
17013         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
17014
17015         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
17016         displacement.
17017
17018 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
17019
17020         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
17021
17022 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
17023
17024         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
17025         macro does not have to be changed during debugging.
17026
17027         * 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>.
17028
17029         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
17030
17031         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
17032         
17033         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
17034         MONO_ARCH_NO_EMULATE_MUL is defined.
17035
17036         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
17037
17038         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
17039
17040         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
17041
17042         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
17043         
17044 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
17045
17046         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
17047         stuff to mini-exceptions.c where it is used.
17048
17049         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
17050         setup code, the real one is in mini-exceptions.c.
17051
17052         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
17053         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
17054         some changes from the freebsd ports tree.
17055
17056         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
17057         constants.
17058         
17059         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
17060
17061 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
17062
17063         * mini.c: on Linux, check for /proc to be mounted
17064         (bug# 79351, novell bug#201204).
17065
17066 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
17067
17068         * mini.c: handle cases where pthread_attr_getstack() behaves
17069         incorrectly (bug #78096).
17070
17071 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
17072
17073         * mini-arm.c: support larger stack frames (bug #79272).
17074
17075 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
17076
17077         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
17078
17079         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
17080         tokens.
17081
17082         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
17083         mono_class_from_name () to find a class from its name.
17084
17085         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
17086
17087 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
17088
17089         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
17090
17091 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
17092
17093         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
17094
17095 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
17096
17097         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
17098         callinfo->trampoline.
17099
17100         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
17101         fixes #79271.
17102         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
17103         future.
17104
17105 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
17106
17107         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
17108
17109 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
17110
17111         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
17112         stats.method_trampolines, it is already done by the generic trampoline code.
17113
17114         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
17115         
17116 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
17117
17118         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
17119
17120         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
17121
17122         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
17123
17124         * mini.c (print_jit_stats): Print mscorlib mempool size too.
17125         
17126         * mini.c (print_jit_stats): Print new stats.
17127
17128         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
17129
17130 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
17131
17132         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
17133         Address on two dimensional arrays. Fixes #78729.
17134
17135         * mini.h (MonoCompile): Add a 'skip_visibility' field.
17136
17137         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
17138         a method.
17139
17140         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
17141
17142         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
17143         #79130.
17144         
17145         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
17146         a race condition.
17147         (mini_get_ldelema_ins): Ditto.
17148
17149 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
17150
17151         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
17152         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
17153         Fixes #79213.
17154
17155 2006-08-29 Neale Ferguson <neale@sinenomine.net>
17156
17157         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
17158         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
17159
17160         * exceptions-s390x.c: Cosmetic change.
17161
17162         * tramp-s390.c: Fix warning.
17163
17164         * cpu-s390.md: Correct length of mul_imm.
17165
17166 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
17167
17168         * aot-compiler.c: added binary writer with ELF backend
17169         implementation (only on Linux/x86 for now).
17170
17171 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17172
17173         * Makefile.am: Don't run net 2.0 AOT tests.
17174
17175         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
17176         (mono_compile_assembly): Skip net 2.0 assemblies as well.
17177
17178         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
17179
17180 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17181
17182         * aot-compiler.c: simplified and refactored the asm-writing code
17183         to allow different backends.
17184
17185 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17186
17187         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
17188
17189         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
17190         little. Share patches of type TYPE_FROM_HANDLE as well.
17191
17192         * mini.c (mono_patch_info_equal): New helper function.
17193         (mono_patch_info_hash): Ditto.
17194
17195         * aot-compiler.c (emit_method_code): Fix s390 build.
17196
17197         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
17198         is not handled because it is stored as a flag and not as a type ctor. Fixes
17199         #79016.
17200
17201 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
17202
17203         * aot-compiler.c: Fix computation of GOT slot statistics.
17204         
17205         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
17206         Also remove support for not PIC AOT.
17207
17208         * mini.h: Bump AOT file format version.
17209
17210         * objects.cs: Add a test for #78990.
17211
17212         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17213         (peter.dettman@iinet.net.au). Fixes #79087.
17214
17215         * basic-long.cs: Add a test for the above.
17216
17217 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17218
17219         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17220         
17221         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17222         code somewhat.
17223
17224 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17225
17226         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17227         exceptions.
17228
17229 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17230
17231         * mini.c: Don't verify COM proxy invoke calls
17232         
17233
17234 2006-08-10  Dick Porter  <dick@ximian.com>
17235
17236         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17237         which process is holding semaphores locked.
17238
17239 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17240
17241         * mini-ia64.c mini-amd64.c: Fix #79027.
17242
17243         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17244
17245         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17246
17247         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17248         implicit arguments in a vararg call. Fixes #79027.
17249
17250 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17251
17252         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17253         (mono_get_array_new_va_signature): Ditto.
17254
17255 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17256
17257         * aot-runtime.c: Call init_plt lazily.
17258
17259         * inssel-long.brg: Fix unsigned long->int conversion.
17260
17261         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17262
17263         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17264         that most data is now in the .rss/.data section.
17265
17266 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17267
17268         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17269
17270         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17271
17272         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17273
17274         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17275
17276         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17277         virtual call. Fixes #79010.
17278
17279         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17280         and use the result as the this argument in the real call.
17281
17282         * generics.2.cs: Add a new test for #79010.
17283         
17284 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17285
17286         * mini-x86.c: Fix a warning.
17287
17288         * aot-compiler.c: Add a bunch of statistics.
17289
17290         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17291
17292 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17293
17294         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17295
17296 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17297
17298         * 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>.
17299
17300 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17301
17302         * mini.c (mono_method_to_ir): Obtain the original method in the
17303         CIL stream and use this to perform validation.
17304
17305         Fixed: #78816
17306
17307 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17308
17309         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17310         (mono_arch_call_opcode): Ditto.
17311
17312         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17313         #78826.
17314
17315         * mini.c (mono_patch_info_dup_mp): New helper function.
17316         
17317         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17318         compilation. Fixes #78827.
17319
17320 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17321
17322         * declsec.c: Use original security informations for
17323           MONO_WRAPPER_MANAGED_TO_MANAGED.
17324
17325 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17326
17327         * mini.c: Allow Com Interop methods/classes and
17328         don't verify COM wrapper calls
17329         
17330
17331 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17332
17333         * inssel-long32.brg: Fix long->i4 checked conversion.
17334
17335         * exceptions.cs: Add a test for the above.
17336
17337 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17338
17339         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17340
17341         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17342         leaks.
17343
17344         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17345         #78775.
17346
17347 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17348
17349         * mini.c: Fix solaris/x86 exception handling.
17350
17351         * Makefile.am: Get rid of $(ICU_LIBS).
17352
17353 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17354
17355         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17356         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17357         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17358
17359         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17360
17361         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17362         this function causes a SIGSEGV.
17363
17364 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17365
17366         * mini.c: Remove unused solaris/x86 includes.
17367
17368 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17369
17370         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17371
17372 2006-06-20  Jb Evain  <jbevain@gmail.com>
17373
17374         * cpu-g4.md: fix max length of start_handler instruction.
17375
17376 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17377         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17378
17379 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17380         * ssa.c: Fixed bug 78653 for SSA based deadce.
17381         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17382         MonoInst.flags, used in SSA based deadce.
17383         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17384         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17385
17386 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17387
17388         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17389         it can end up using non executable memory on ppc64 systems
17390         running ppc32 userspace (fix from Johannes Berg).
17391
17392 2006-06-14  Dick Porter  <dick@ximian.com>
17393
17394         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17395         4.1.1
17396
17397 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17398         * mini.c: Made so that inline is locally disabled if it would
17399         trigger a .cctor, because too many apps depend on this behavior
17400         (which seems to be also the one of the MS CLR).
17401
17402 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17403
17404         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17405         No idea why this worked before.
17406
17407         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17408         which branch to outer exception clauses since they could skip the
17409         inner finally clauses. Fixes #78633.
17410
17411         * exceptions.cs: Add a test for the above.
17412
17413         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17414         Fixes #78629.
17415
17416         * iltests.il: Add a test for the above.
17417
17418 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17419
17420         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17421         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17422
17423         * iltests.il: Add a test for the above.
17424
17425 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17426
17427         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17428         
17429         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17430         methods as instrinsics.
17431
17432 2006-06-09  Wade Berrier <wberrier@novell.com>
17433
17434         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17435         (simple-cee-ops.h ssapre-mini-ops.h)
17436
17437 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17438
17439         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17440         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17441         instruction).
17442         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17443         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17444
17445 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17446
17447         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17448
17449 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17450
17451         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17452         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17453         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17454         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17455         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17456         of opcodes, so that bug 78549 should not happen again.
17457         * ssapre.c: Updated to use the renamed files.
17458
17459 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17460
17461         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17462         in OP_ATOMIC_EXCHANGE_I4.
17463
17464 2006-06-07  Wade Berrier <wberrier@novell.com>
17465
17466         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17467         in mono_debugger_create_notification_function)
17468
17469 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17470
17471         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17472         
17473         * mini.c (type_from_stack_type): Disable some changes which do not
17474         seem to work.
17475
17476         * driver.c: Reenable opts.
17477
17478         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17479         of the evaluation stack.
17480         
17481         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17482         evaluation stack trace at entry to the bblock.
17483
17484         * mini.c (merge_stacks): New function to perform verification of stack merges.
17485         Turned off by default.
17486
17487         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17488         STACK_MP.
17489         
17490 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17491
17492         * local-propagation.c: Fixed bug 78549.
17493
17494 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17495
17496         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17497
17498 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17499
17500         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17501         tramp-arm.c, tramp-ia64.c
17502         (mono_debugger_create_notification_function): Update signature to
17503         new signature and use new protocol for creating the notification
17504         function.  
17505
17506         Should fix the build.
17507
17508 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17509
17510         * exceptions-ppc.c (mono_jit_walk_stack)
17511         (ves_icall_get_frame_info): Fix the build
17512
17513 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17514
17515         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17516
17517 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17518
17519         * il2tests.2.il: New file for generics CIL tests.  Add test for
17520         #78019.
17521         * Makefile.am: Update.
17522
17523         Fix #78019
17524         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17525         to nullable types.
17526
17527 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17528
17529         * aliasing.c: Fixed bug 78311.
17530
17531 2006-05-29  Martin Baulig  <martin@ximian.com>
17532
17533         * mini-exceptions.c (mono_find_jit_info): When computing the
17534         native offset, check whether we're actually inside the method's
17535         code; call mono_debug_print_stack_frame() to format the frame.
17536         (ves_icall_System_Exception_get_trace): Call
17537         mono_debug_print_stack_frame() to format the stack frame.
17538         (ves_icall_get_trace): Update to the new debugging API.
17539         (mono_jit_walk_stack_from_ctx): Likewise.
17540         (ves_icall_get_frame_info): Likewise.
17541
17542         * mini.c (get_method_from_ip): Use the new debugging API.
17543         (mono_print_method_from_ip): Likewise.
17544
17545         * exceptions-ppc.c
17546         (mono_jit_walk_stack): Use the new debugging API.
17547         (ves_icall_get_frame_info): Likewise.   
17548
17549 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17550
17551         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17552
17553 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17554
17555         * mini.c: Added "limitator" to inline for debugging.
17556
17557 2006-05-24  Martin Baulig  <martin@ximian.com>
17558
17559         * debug-debugger.c (mono_debugger_init): Create a private,
17560         malloc()-based code manager for the notification function and
17561         intentionally leak it on exit.  This fixes the crash-on-exit race
17562         condition.
17563
17564         * tramp-amd64.c
17565         (mono_debugger_create_notification_function): Added
17566         `MonoCodeManager *' argument.
17567
17568         * tramp-x86.c
17569         (mono_debugger_create_notification_function): Added
17570         `MonoCodeManager *' argument.
17571
17572 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17573
17574         * aliasing.c: Fixed 64 bit issue.
17575         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17576         default since all known bugs are fixed (one more time!).
17577
17578 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17579
17580         * mini.c: write barrier support.
17581
17582 2006-05-23  Martin Baulig  <martin@ximian.com>
17583
17584         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17585         check at the top of the file.
17586
17587 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17588
17589         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17590         reverting changes without reason and without changelog entries.
17591
17592 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17593
17594         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17595         to a few opcodes. Fixes #78439.
17596
17597         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17598         consistency with other archs.
17599
17600         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17601
17602 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17603
17604         * debug-debugger.c: fix the build.
17605
17606 2006-05-17  Martin Baulig  <martin@ximian.com>
17607
17608         * debug-debugger.c
17609         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17610         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17611         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17612         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17613
17614 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17615
17616         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17617
17618 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17619
17620         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17621         MONO_TYPE_GENERICINST.
17622         
17623         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17624         MONO_TYPE_GENERICINST.
17625
17626 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17627
17628         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17629         #78325.
17630
17631 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17632
17633         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17634         mempool.
17635         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17636
17637 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17638
17639         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17640         mono_trace_cleanup ().
17641
17642         * iltests.il: Fix problem with the newly added test.
17643
17644         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17645         due to register constraints, free up the previous hreg. Fixes #78314.
17646
17647         * iltests.il: Add new test for #78314.  
17648
17649         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17650         Interlocked.Add. Fixes #78312.
17651
17652         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17653         
17654 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17655
17656         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17657
17658 2006-05-05  Martin Baulig  <martin@ximian.com>
17659
17660         * debug-mini.c (mono_debug_open_block): New method.
17661
17662         * mini-amd64.c
17663         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17664         the beginning of each basic block.
17665
17666         * mini-x86.c
17667         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17668         the beginning of each basic block.
17669
17670 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17671
17672         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17673         default until I understand why they break the build on amd64.
17674
17675 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17676
17677         * mini.c (mini_cleanup): Call mono_cleanup ().
17678
17679         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17680         errors.
17681
17682 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17683
17684         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17685         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17686         default since all known bugs are fixed, and I cannot reproduce bug
17687         77944... I'm asking Matt Hargett to test again after this commit.
17688
17689 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17690
17691         * mini-codegen.c: Fixed typo that thrashed inline.
17692
17693 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17694
17695         * dominators.c (compute_dominators): Avoid using a worklist since
17696         it is not correct in some cases. Instead, iterate over all bblocks as
17697         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17698
17699 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17700
17701         * mini.c (mono_jit_compile_method_inner): Use
17702         mono_prepare_exception_from_error that resets the value
17703         internally.
17704
17705 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17706
17707         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17708         
17709 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17710
17711         * aliasing.c: Fixed bug 78210.
17712
17713 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17714
17715         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17716         default until all their problems (or the ones they trigger) are fixed.
17717
17718 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17719
17720         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17721         
17722         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17723         as loaded only after resolving patches since that could invoke the same method.
17724
17725         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17726
17727         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17728         functions.
17729
17730         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17731         AOT loader.
17732
17733         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17734         stack.
17735
17736         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17737         made from AOT code through the PLT table.
17738
17739         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17740         holding the plt offset when a call is made to the aot plt trampoline.
17741         
17742 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17743
17744         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17745         amd64 AOT support.
17746
17747         * Makefile.am (common_sources): Fix build breakage.
17748
17749         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17750         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17751         intra-assembly calls if possible.
17752         
17753         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17754
17755         * mini-trampolines.c: Handle PLT entries.
17756
17757         * mini.c: Avoid creating a GOT var for calls.
17758
17759         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17760         from mscorlib code.
17761
17762         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17763         from mscorlib code.
17764
17765         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17766         AOT code.       
17767
17768         * mini.h: Bump AOT file format version.
17769         
17770         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17771         covers more cases.
17772
17773 2006-04-25  Martin Baulig  <martin@ximian.com>
17774
17775         * driver.c: Disable copyprop, consprop and inline when running
17776         inside the debugger.
17777
17778 2006-04-25  Martin Baulig  <martin@ximian.com>
17779
17780         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17781         with `get_current_thread' and added `detach'.
17782         (MonoDebuggerMetadataInfo): Added `thread_size',
17783         `thread_tid_offset', `thread_stack_ptr_offset' and
17784         `thread_end_stack_offset'.
17785
17786 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17787
17788         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17789         aot-runtime.c.
17790
17791         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17792         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17793
17794         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17795
17796         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17797
17798         * aot.c: Add support for ADJUSTED_IID.  
17799
17800 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17801
17802         * aot.c (emit_method_order): Don't align method_order_end.
17803
17804         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17805         the interface ID changes.
17806
17807 2006-04-21  Dick Porter  <dick@ximian.com>
17808
17809         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17810         cleaning up a thread.  Fixes the new part of bug 77470.
17811
17812 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17813
17814         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17815         to managed wrapper.
17816                      
17817 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17818
17819         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17820         
17821         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17822         SIGSEGV. Fixes #78072.
17823
17824         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17825         unregister our SIGABRT handler.
17826
17827 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17828
17829         * mini.c: Disabled inline where it can alter the call stack in a
17830         way visible from managed code.
17831         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17832         default.
17833
17834 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17835
17836         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17837         on other platforms. Fixes #78089.
17838
17839 2006-04-13  Martin Baulig  <martin@ximian.com>
17840
17841         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17842         determine whether we're inside the debugger.
17843
17844         * debug-debugger.h
17845         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17846
17847 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17848
17849         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17850         handler clauses. Fixes #78024.
17851
17852         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17853         in the CALL_MEMBASE opcodes. Fixes #78088.
17854         (mono_arch_get_vcall_slot_addr): Ditto.
17855
17856 2006-04-10  Martin Baulig  <martin@ximian.com>
17857
17858         * debug-debugger.c: The thread handling code has now been moved
17859         into ../metadata/threads.c.
17860
17861 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17862
17863         * driver.c (mono_main): Fix --with-gc=none build.
17864
17865         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17866         (mono_spillvar_offset_float): Ditto.
17867         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17868         hreg, not when its !global, since on ia64, there is a third category: stacked
17869         registers.      
17870
17871 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17872
17873         * mini.c: set MonoInst->klass for load field address and a few other
17874         places.
17875
17876 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17877
17878         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17879
17880 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17881
17882         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17883         the branch opt changes.
17884
17885 2006-04-06  Dick Porter  <dick@ximian.com>
17886
17887         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17888         
17889         * wapihandles.c (mini_wapi_seminfo): 
17890         * driver.c (mono_main): Add semaphore info option
17891
17892 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17893
17894         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17895         branch optimization changes. Fixes #78009.
17896
17897 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17898
17899         * mini.c: ignore accessibility of methods in managed->native wrappers.
17900
17901 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17902
17903         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17904         
17905         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17906
17907 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17908
17909         * mini.c: Modify the branch optimizations to preserve the invariant that
17910         the entries inside the in_bb and out_bb arrays are unique.
17911         (mono_unlink_bblock): Avoid creation of new arrays.
17912
17913 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17914
17915         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17916         change (#77992).
17917
17918 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17919
17920         * mini.c (optimize_branches): Remove the "optimizations" in
17921         the cbranch1/cbranch2 -> branch cases which were causing several
17922         problems in the past. Fixes #77986.
17923
17924 2006-03-31  Chris Toshok  <toshok@ximian.com>
17925
17926         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17927         default optimizations :(
17928
17929 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17930
17931         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17932         branch.
17933
17934 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17935
17936         * local-propagation.c: Added comments to structs and removed
17937         "Mono" prefixes from local tree mover types.
17938
17939 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17940
17941         * Makefile.am (arch_sources): Define this for each architecture so 
17942         libmono_la_SOURCES is defined in one place.
17943
17944 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17945
17946         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17947         from handles/.
17948
17949 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17950
17951         * driver.c: print the GC name supplied by configure.
17952
17953 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17954
17955         * local-propagation.c: Added tree mover, and moved here all the
17956         local propagation code from mini.c
17957         * mini.c: Added support for treeprop, and moved all the local
17958         propagation code to local-propagation.c
17959         * mini.h: Added support for treeprop
17960         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17961         treeprop, inline and deadce by default
17962         * Makefile.am: Added local-propagation.c
17963
17964 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17965
17966         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17967
17968 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17969
17970         * debug-debugger.c: make it compile without the Boehm GC.
17971
17972 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17973
17974         * mini.c: fixed issue with mismatch when an icall is registered
17975         with multiple names but same address.
17976
17977 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17978
17979         * declsec.c, mini-exceptions.c: use write barrier to set reference
17980         fields of managed objects.
17981
17982 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17983
17984         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17985         (can_access_internals): Fix a warning.
17986
17987         * mini.c (print_method_from_ip): Rename this to 
17988         mono_print_method_from_ip so it gets exported.
17989
17990         * trace.c: Deal with strings inside StringBuilder's containing garbage
17991         and fix memory leaks. Fixes #77848.
17992
17993 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17994
17995         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17996         fixes #77787.
17997
17998 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17999         
18000         * mini-s390.c: Remove OP_X86_TEST_NULL.
18001
18002 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
18003
18004         * mini.c: use the correct GetHashCode() for the moving collector.
18005
18006 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
18007
18008         * liveness.c: Regalloc spill cost tuning.
18009
18010 2006-03-15 Neale Ferguson <neale@sinenomine.net>
18011         
18012         * mini-s390x.h: Correct S390_LONG macro.
18013
18014         * mini-s390x.c: Cleanup unused code.
18015
18016 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
18017
18018         * jit-icalls.h: New file.
18019
18020         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
18021         icalls and include that instead of including jit-icalls.c.
18022
18023         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
18024         OP_X86 opcodes.
18025
18026 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
18027
18028         * mini.c: when checking for member accessibility, also check for
18029         friend assemblies and for explicit interface implementations.
18030
18031 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
18032
18033         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
18034
18035         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
18036
18037         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
18038         common cases are done first.    
18039
18040         * mini-ops.h: Only define platform specific opcodes on the given platform.
18041
18042         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
18043         branch.
18044         
18045 2006-03-14  Martin Baulig  <martin@ximian.com>
18046
18047         Revert Paolo's change from r57348:
18048
18049         * mini.h: don't use gboolean for bitfields.
18050         * mini.c: verifier changes for fields and methods accessibility.
18051
18052 2006-03-13  Neale Ferguson <neale@sinenomine.net>
18053
18054         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
18055
18056         * mini-s390x.c: Fix conv_r_un.
18057
18058         * cpu-s390, cpu-s390x.md: Fix lengths.
18059
18060 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
18061
18062         * mini.c: nested types have access to all the nesting
18063         levels, not just the enclosing types.
18064
18065 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
18066
18067         * mini.c: added a few more verification checks.
18068
18069 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
18070
18071         * liveness.c: Merge optimizations from the linear-il branch.
18072
18073 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
18074
18075         * mini-ia64.c (emit_call): Add a comment.
18076
18077         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
18078
18079         * tramp-ia64.c: Fix some warnings.
18080
18081 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
18082
18083         * mini.h: don't use gboolean for bitfields.
18084         * mini.c: verifier changes for fields and methods accessibility.
18085
18086 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
18087
18088         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
18089         lazy icall wrapper changes.
18090
18091         * dominators.c: Replace all the dominator algorithms with faster
18092         ones from the linear-il branch.
18093
18094         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
18095         the mempool.
18096
18097         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
18098         common cases are done first.
18099
18100         * mini-amd64.c: Fix some warnings.
18101
18102         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
18103         from the mempool.
18104
18105         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
18106         added code.
18107
18108         * mini.h: Add a missing prototype.
18109
18110 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
18111
18112         * mini.c: Compile icall wrappers lazily.
18113
18114         * mini-codegen.c: Use printf instead of g_print since its much faster.
18115
18116         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
18117         function.
18118
18119         * mini.c (optimize_branches): Cache the negative result from 
18120         remove_block_if_useless ().
18121
18122         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
18123         Also fix some bblock linking issues.
18124
18125         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
18126         assembly files.
18127
18128         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
18129
18130         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
18131         accessed fields first, for better cache behavior.
18132         
18133 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
18134
18135         * mini.c: speedup IList<T> array accesses.
18136
18137 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
18138
18139         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
18140         inline_costs counter. Fixes #77190.
18141
18142 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
18143
18144         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
18145         trace messages. Fixes #77706.
18146
18147 2006-03-04  Martin Baulig  <martin@ximian.com>
18148
18149         * tramp-amd64.c, tramp-x86.c
18150         (mono_debugger_create_notification_function): Use
18151         mono_global_codeman_reserve() to allocate a buffer at runtime and
18152         return it.
18153
18154         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
18155
18156         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
18157         notification function at runtime and then call `initialize' in the
18158         `MONO_DEBUGGER__debugger_info' vtable.
18159
18160 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
18161
18162         * iltests.il: Fix a visibility problem.
18163
18164 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18165
18166         * driver.c, mini.c: add hooks for the counters API.
18167
18168 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
18169
18170         * driver.c: show disabled options.
18171
18172 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18173
18174         * linear-scan.c: always use cost-driven selection.
18175
18176 2006-02-28  Raja R Harinath  <rharinath@novell.com>
18177
18178         * jit-icalls.c (helper_compile_generic_method): Revert change from
18179         2006-02-24.
18180
18181 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
18182
18183         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
18184
18185 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
18186
18187         * inssel.brg: style fixes, mostly to force the updated monoburg
18188         to run for people using svn.
18189
18190 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18191
18192         * mini.c: match monoburg changes.
18193
18194 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18195
18196         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
18197         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
18198         declaration in the header file.
18199
18200 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18201
18202         * helpers.c: reduce relocations and mem usage.
18203
18204 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18205
18206         * mini.h, mini-codegen.c: disable logging features if
18207         requested by configure.
18208
18209 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
18210
18211         * mini.c: tiny verifier changes.
18212
18213 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18214
18215         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18216         cpu-pentium.md: stack alignment changes for osx/x86,
18217         partially from Geoff Norton <gnorton@customerdna.com>.
18218
18219 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18220
18221         * jit-icalls.c (helper_compile_generic_method): Update to changes
18222         in metadata/class.c.
18223
18224 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18225         
18226         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18227         
18228         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18229         interface calls with large offsets.
18230
18231 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18232
18233         * jit-icalls.c (helper_compile_generic_method): Document the
18234         special-case we depend on so that we can inflate the method twice
18235         with the same context with no bad side-effects.
18236
18237 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18238
18239         * mini-x86.c, mini-amd64.c: fix for case when xen support
18240         is disabled.
18241
18242 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18243
18244         * mini-x86.c, mini-amd64.c: generate code to access tls items
18245         in a faster way for Xen systems.
18246
18247 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18248
18249         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18250         updates and compilation fixes for the OSX/x86 port, mostly from
18251         Geoff Norton <gnorton@customerdna.com>.
18252
18253 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18254
18255         * inssel.brg: faster interface call implementation
18256         to sync with the interface_offsets MonoVTable changes.
18257
18258 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18259
18260         * mini.c: more verification checks.
18261
18262 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18263
18264         * mini.c: added a few more verification checks.
18265
18266 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18267
18268         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18269         facility on the processor and use it if available.
18270
18271 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18272
18273         * driver.c, aot.c, mini.c: throw exception if the IL code is
18274         invalid or unverifiable.
18275
18276 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18277
18278         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18279         m.StructField.
18280
18281 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18282
18283         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18284
18285 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18286
18287         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18288         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18289         handling of instantiated generic valuetypes.
18290
18291 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18292
18293         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18294         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18295         instead.
18296
18297         * generics.2.cs: Revert the nullable reftypes tests.
18298
18299 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18300
18301         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18302         using __builtin_frame_address (1) as it doesn't work in the presence
18303         of optimizations. Hopefully fixes #77273.
18304
18305         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18306         -> generics.cs change as it doesn't work with some automake versions.
18307
18308 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18309
18310         * mini.c: handle systems that sue a different way to
18311         retrieve the stack address of the current thread.
18312
18313 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18314
18315         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18316         it specially in the makefile.
18317
18318         * generics.2.cs: Add tests for nullable reference types.
18319
18320 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18321
18322         * mini.c: always handle the case when mono_jit_init()
18323         is called in a thread different from the main thread,
18324         confusing libgc (bug #77309).
18325
18326 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18327
18328         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18329
18330 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18331
18332         * mini.c: change optimize_branches () to use a single loop
18333         and introduce a new optimization to simplify some range checks.
18334
18335 2006-02-03  Martin Baulig  <martin@ximian.com>
18336
18337         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18338         and merged with debugger_thread_manager_add_thread().
18339         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18340         inform the debugger about the main thread.
18341
18342 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18343
18344         * basic.cs: Add test for div.un/rem.un constant folding.
18345
18346 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18347
18348         * cpu-s390x.md: correct int_xor_imm length
18349
18350 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18351
18352         * generics.2.cs: New test for #77442.
18353
18354         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18355         #77442.
18356
18357 2006-02-02  Martin Baulig  <martin@ximian.com>
18358
18359         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18360         <mono/metadata/mono-debug-debugger.h>   
18361
18362         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18363
18364 2006-02-02  Martin Baulig  <martin@ximian.com>
18365
18366         * debug-debugger.h: New header file for debug-debugger.c.
18367
18368         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18369         function is a separate thread anymore; add support for attaching.
18370
18371 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18372
18373         * tramp-x86.c: Fix a warning.
18374
18375 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18376
18377         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18378         on very large methods.
18379
18380         * aot.c (load_patch_info): Fix a warning.
18381
18382 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18383
18384         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18385         mini-ops.h: alu membase optimizations.
18386
18387 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18388
18389         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18390         to speedup StringBuilder.
18391
18392 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18393
18394         * dominators.c (mono_compute_natural_loops): Fix detection of
18395         loop body start blocks.
18396
18397         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18398
18399 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18400
18401         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18402         #75145.
18403
18404 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18405
18406         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18407
18408 2006-01-25  Martin Baulig  <martin@ximian.com>
18409
18410         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18411         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18412         started to cleanup this file a little bit.
18413
18414 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18415
18416         * mini.c: optimize a codepath frequently happening in generics code.
18417
18418 2006-01-23  Martin Baulig  <martin@ximian.com>
18419
18420         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18421
18422         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18423         functions directly.
18424
18425         * driver.c: debug-debugger.c is only available if
18426         `MONO_DEBUGGER_SUPPORTED' is defined.   
18427
18428 2006-01-23  Martin Baulig  <martin@ximian.com>
18429
18430         * debug-debugger.c: Only enable this on platforms where the Mono
18431         Debugger is working (x86 and x86_64).
18432
18433 2006-01-21  Martin Baulig  <martin@ximian.com>
18434
18435         The Mono Debugger is now using the normal `mono' instead of the
18436         `mono-debugger-mini-wrapper' when executing managed code.
18437
18438         * debug-debugger.c: New file; previously known as
18439         debugger/wrapper/wrapper.c.
18440
18441         * debug-mini.c (mono_init_debugger): Removed.
18442
18443         * driver.c (mono_main): Added new `--inside-mdb' command line
18444         argument which is used when running inside the debugger.
18445
18446 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18447
18448         * liveness.c (mono_analyze_liveness): Remove some unused data
18449         structures.
18450
18451 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18452
18453         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18454
18455 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18456
18457         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18458         depends on implementation details of monobitset.
18459
18460         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18461         Fixes #77271.
18462
18463 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18464
18465         * liveness.c: Update after monobitset changes.
18466
18467 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18468
18469         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18470
18471 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18472
18473         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18474
18475         * mini-s390x.c: Remove warning messages.
18476
18477 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18478
18479         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18480
18481 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18482
18483         * generics.2.cs: Add ldelem/stelem_any test.
18484
18485 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18486
18487         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18488
18489 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18490
18491         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18492         
18493 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18494
18495         * generics.2.cs: Reenable vtype tests.
18496
18497         * inssel-x86.brg: Remove an icorrect valuetype rule.
18498
18499 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18500
18501         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18502         initial support for OP_ABS.
18503
18504 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18505
18506         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18507
18508 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18509
18510         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18511         conversion and implement LADD/LSUB.
18512
18513         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18514         architectures.
18515
18516 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18517
18518         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18519
18520         * exceptions-s390x.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, mini-s390.c, mini-s390.h: Fix lmf handling when 
18526         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18527         (stack walk problem).
18528
18529 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18530
18531         * aot.c (mono_aot_load_method): Fix a warning.
18532
18533 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18534
18535         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18536
18537 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18538
18539         * iltests.il: Add test for #77148.
18540
18541         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18542         #77148.
18543
18544 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18545
18546         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18547
18548 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18549
18550         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18551         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18552
18553         * basic-long.cs: Add lconv-to-r4/r8 tests.
18554
18555 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18556
18557         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18558
18559         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18560         here as on other archs.
18561
18562 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18563
18564         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18565
18566 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18567
18568         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18569         
18570         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18571
18572         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18573         instrument_prolog; Add memory_barrier instruction.
18574
18575 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18576
18577         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18578
18579 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18580
18581         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18582
18583         * aliasing.c inssel.brg: Fix warnings.
18584
18585         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18586         could skip initialization of some parts of memory.
18587
18588         * mini.c mini-ia64.c: Fix warnings.
18589
18590         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18591
18592 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18593
18594         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18595         a crash seen on sparc.
18596
18597         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18598         
18599         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18600
18601 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18602
18603         * mini-ops.h: Add s390_backchain instruction
18604
18605         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18606
18607         * cpu-s390.md: Add s390_backchain instruction
18608
18609         * mini-s390.c: Significant ABI changes
18610
18611         * mini-s390.h: Cater for zero length structures
18612
18613 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18614
18615         * mini-s390.c: ABI fixes
18616
18617         * inssel-s390.brg: Remove debug statements
18618
18619         * cpu-s390.md: Fix length of ATOMIC_xx operations
18620
18621 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18622
18623         * basic-float.cs: Add float<->long conversion tests.
18624
18625 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18626
18627         * mini-s390.c: Fix LOCALLOC processing.
18628
18629         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18630
18631 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18632
18633         * iltests.il: Add tests for some opcodes not covered by the other
18634         tests.
18635
18636 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18637
18638         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18639         register loading for Tail processing; Correct trace output.
18640
18641         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18642
18643         * cpu-s390.md: Correct size of jmp instruction. 
18644
18645 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18646
18647         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18648
18649 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18650
18651         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18652           Bring s390 up to current level.
18653
18654 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18655
18656         * generics.2.cs: Disable the newly added tests as they do not work yet.
18657         
18658         * generics.2.cs: Add valuetype tests.
18659
18660 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18661
18662         * basic-long.cs: Add i4->u8 test.
18663
18664         * objects.cs: Add tests for JIT intrinsic.
18665
18666         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18667         optimizations lost by a mistake.
18668
18669 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18670
18671         * basic-long.cs: Remove a test moved to objects.cs.
18672
18673         * arrays.cs: Add more array tests.
18674
18675 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18676
18677         * arrays.cs: Add new tests for multi-dimensional arrays.
18678
18679 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18680
18681         * Makefile.am (test_sources2): Add generics.2.cs.
18682         (EXTRA_DIST): Add test_sources2.
18683
18684 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18685
18686         Support for boxing and unboxing nullable types as well as the
18687         isinst operation on nullables, per the CLI ammendment.
18688
18689         * inssel.brg (CEE_ISINST): Special case for nullable
18690
18691         * mini.c (handle_unbox_nullable): new method
18692         (handle_box): Special case for nullable types
18693         (mono_method_to_ir): Call handle_unbox_nullable in correct
18694         places.
18695
18696         * generics.2.cs: New test suite
18697
18698         * Makefile.am: Support for regression tests with generics.
18699
18700 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18701
18702         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18703         allocated to registers. Fixes #76800.
18704
18705 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18706
18707         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18708
18709 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18710
18711         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18712         of platforms.
18713
18714 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18715
18716         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18717         objects.cs.
18718
18719         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18720         
18721         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18722 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18723
18724         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18725         single precision before storing to a single precision location.
18726
18727 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18728
18729         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18730
18731 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18732
18733         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18734         correct files.
18735
18736         * basic.cs: Remove test_0_byte_compares test which was moved to
18737         objects.cs a long time ago.
18738
18739 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18740
18741         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18742
18743 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18744
18745         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18746         handlers are called.
18747
18748         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18749         throwing code.
18750
18751          * mini-ia64.c: Add support for the throw->branch exception 
18752         optimization.   
18753
18754         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18755
18756 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18757
18758         * mini.c: Enabled "fastpath" deadce :-)
18759         
18760 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18761
18762         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18763         alias analysis pass to support it.
18764         * mini.h: Likewise.
18765         * ssa.c: Likewise.
18766         * liveness.c: Likewise (liveness computation can use aliasing
18767         information to be more accurate).
18768         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18769         moreover made so that "--compile-all" uses the given optimization
18770         flags and not the default ones.
18771         * aliasing.c: Alias analysis (new file).
18772         * aliasing.h: Likewise.
18773         * Makefile.am: added "aliasing.c" and "aliasing.h".
18774         
18775 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18776
18777         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18778         OP_L opcodes.
18779
18780 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18781
18782         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18783         fp >= end_of_stack exit condition, as it is not needed, and it might
18784         become true for fp eliminated frames.
18785
18786 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18787
18788         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18789         coded offsets.
18790
18791 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18792
18793         * mini-arm.c: fixed alignment of doubles/longs to match
18794         the C ABI (bug #76635).
18795
18796 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18797
18798         * aot.c: fix compilation with --enable-minimal=aot.
18799
18800 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18801
18802         * mini-arm.c: fixed compatibility with the new
18803         floating point emulator package for compares.
18804
18805 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18806
18807         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18808
18809 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18810
18811         * mini-exceptions.c (print_stack_frame): Output to stderr.
18812         (mono_handle_native_sigsegv): Ditto.
18813
18814 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18815
18816         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18817         OP_LCONV_TO_OVF_I implementation.
18818
18819         * mini-amd64.c: Add support for the throw->branch exception 
18820         optimization.
18821
18822         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18823         when the catch clause catches a more general exception, i.e. Object.
18824
18825 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18826
18827         * cpu-ia64.md: Remove unused opcodes.
18828
18829         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18830         specific defines for architectures defining USE_SIGACTION.
18831
18832         * mini-ia64.c: Fix some warnings.
18833
18834         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18835         version seemed to skip a frame.
18836
18837 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18838
18839         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18840         only calls which are made to native code use this flag.
18841
18842 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18843
18844         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18845         varargs methods as well.
18846         
18847         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18848         which have save_lmf set. Reorganize methods prologs a bit.
18849
18850         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18851         debugger to the proper place.
18852
18853 2005-10-29  Martin Baulig  <martin@ximian.com>
18854
18855         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18856         when running inside the debugger until the debugger has support
18857         for it.
18858
18859 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18860
18861         * mini.h: Fix a warning.
18862
18863 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18864
18865         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18866         we expose publicly, this returns the string.
18867
18868 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18869
18870         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18871         with fp elimination.
18872
18873 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18874
18875         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18876         native stacktrace using the glibc 'backtrace' function if available.
18877
18878 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18879
18880         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18881
18882         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18883         handle SIGSEGVs received while in native code.
18884
18885         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18886         code, call mono_handle_native_sigsegv which will abort the runtime
18887         after printing some diagnostics, instead of converting it into a
18888         confusing NullReferenceException.
18889
18890 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18891
18892         * cpu-pentium.md: Remove unused opcodes.
18893
18894 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18895
18896         * mini-amd64.h (MonoLMF): Add rsp field.
18897
18898         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18899         the lmf too.
18900
18901 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18902
18903         * mini-codegen.c (get_register_spilling): Fix some warnings.
18904
18905 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18906
18907         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18908         elimination during exception handling. Enable fp elimination by
18909         default.
18910
18911         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18912         elimination.
18913
18914 2005-10-16  Martin Baulig  <martin@ximian.com>
18915
18916         * mini-exceptions.c
18917         (mono_debugger_run_finally): New public method for the debugger.
18918
18919 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18920
18921         * debug-mini.c (mono_debug_init_method): Fix warning.
18922
18923         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18924         the 'exname' parameter const to fix some warnings.
18925
18926 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18927
18928         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18929         introduced by the previous patch.
18930
18931 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18932
18933         * basic-float.cs: Add test for precision of float arithmetic.
18934
18935         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18936         when loading/storing single values from/to memory.
18937
18938         * mini.c (mono_jit_compile_method_with_opt): Create the function
18939         pointers in the correct domain.
18940
18941 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18942
18943         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18944         introduced by previous patch.
18945         
18946         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18947         when out_filter_idx is NULL.
18948
18949         * mini-exceptions.c: Don't run filter clauses twice during exception
18950         handling. Fixes #75755.
18951
18952 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18953
18954         * aot.c: Add support for ldflda wrappers.
18955
18956         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18957         #75902.
18958
18959 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18960
18961         * mini.c, mini.h: do not consider exception handlers blocks when
18962         setting up interface variables.
18963
18964 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18965
18966         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18967
18968 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18969
18970         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18971         causes a regression.
18972
18973         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18974
18975 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18976
18977         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18978         of the OP_P definitions.
18979
18980         * TODO: Add a proposal for dealing with the CEE/OP mess.
18981
18982         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18983         optimizations from the x86 port.
18984
18985         * cpu-amd64.md: Ditto.
18986
18987         * basic.cs basic-long.cs: Add tests.
18988
18989 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18990
18991         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18992         Patrik Torstensson's implementation of my exception-handling
18993         optimization idea, when the exception object is not used
18994         (bug #62150).
18995
18996 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18997
18998         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18999         of the mul_imm optimizations from the old jit.
19000
19001 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
19002
19003         * mini.c, liveness.c: patch by Patrik Torstensson and
19004         Zoltan Varga to improve performance in methods with
19005         exception clauses.
19006
19007 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
19008
19009         * driver.c: Remove 'Globalization' entry from --version.
19010
19011 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
19012
19013         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
19014         there is a profiler interested in JIT events.
19015
19016         * aot.c: Load profile files produced by the AOT profiling module, and
19017         reorder methods based on the profiling info. Add a 'method_order' table
19018         to the AOT file to make mono_aot_find_jit_info work with the reordered
19019         methods.
19020
19021         * mini.h: Bump AOT file version info.
19022
19023 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
19024
19025         * mini-arm.h: work around what looks like a gcc bug when optimizations
19026         are enabled.
19027
19028 2005-09-28  Raja R Harinath  <rharinath@novell.com>
19029
19030         * Makefile.am (AM_CFLAGS): Don't use += to append inside
19031         conditionals.  Use ...
19032         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
19033
19034 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
19035
19036         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
19037         to determine the amount of memory to copy when passing valuetypes.
19038
19039         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
19040         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
19041
19042 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
19043
19044         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
19045         information about aot.
19046
19047 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
19048
19049         * *.c: Replace the use of {Enter,Leave}CriticalSection with
19050         macros. This will allow a deadlock debugger to easily be plugged
19051         in.
19052
19053 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
19054
19055         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
19056
19057 2005-09-27  Raja R Harinath  <rharinath@novell.com>
19058
19059         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
19060         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
19061         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
19062         ($(arch_built)) [CROSS_COMPILING]: Error out.
19063
19064 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
19065
19066         * aot.c: Add support for the no_special_static flag for classes.
19067
19068 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
19069
19070         * Reapply reverted patches.
19071
19072         * *: Revert r50174 as well.
19073
19074         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
19075
19076 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
19077
19078         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
19079
19080 2005-09-23  Miguel de Icaza  <miguel@novell.com>
19081
19082         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
19083         part of the SIG_HANDLER_SIGNATURE.  
19084
19085 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
19086
19087         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
19088         statistics.
19089
19090         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
19091         introduced by previous patch.
19092
19093 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
19094
19095         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
19096         saved registers too.
19097
19098         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
19099         upon the information returned by get_call_info ().
19100         
19101         * mini-x86.c (add_float): Fix stack size calculation.
19102         (mono_arch_call_opcode): Rewrite this so it works based up the
19103         information returned by get_call_info ().
19104         (mono_arch_get_this_vret_args): Ditto.
19105
19106 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
19107
19108         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
19109         in cinfo to determine the registers which need to be used.
19110
19111 2005-09-20  Miguel de Icaza  <miguel@novell.com>
19112
19113         * driver.c (mono_main): Add --server and --desktop flags. 
19114
19115 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
19116
19117         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
19118         registers as global registers.
19119
19120         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
19121         longer needed with the new register allocator.
19122
19123         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
19124
19125         * cpu-ia64.md: Remove unused opcodes.
19126         
19127         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
19128         
19129 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
19130
19131         * cpu-amd64.md: Remove unused opcodes.
19132
19133         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
19134         needed with the new register allocator.
19135
19136         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
19137         reg-reg moves.
19138
19139 2005-09-16  Raja R Harinath  <rharinath@novell.com>
19140
19141         * Makefile.am (check-local): Don't invoke semdel-wrapper.
19142
19143 2005-09-16  Martin Baulig  <martin@ximian.com>
19144
19145         * exceptions-amd64.c
19146         (throw_exception): Don't call mono_debugger_throw_exception() if
19147         we're a rethrow - see the FIXME in the code.
19148
19149 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
19150
19151         * mini.c (mono_init_exceptions): This only works on some architectures.
19152         
19153 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19154
19155         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
19156         on ia64.
19157
19158         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
19159
19160         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
19161         now in mini-exceptions.c.
19162
19163 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
19164
19165         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
19166         now in mini-exceptions.c.
19167
19168 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19169
19170         * exceptions-x86.c: Applied patch from Patrik Torstensson 
19171         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
19172
19173         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
19174         code into mini-exceptions.c. Add some assertions to it.
19175
19176 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
19177
19178         * aot.c (emit_section_change): Applied patch from "The Software Team" 
19179         (<software@solmersa.com>). Fix as errors on windows.
19180
19181 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19182
19183         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
19184         method info into the LMF.
19185
19186 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19187         
19188         * mini-ia64.c: Add proper unwind info for method epilogs.
19189
19190         * exceptions-ia64.c: Add some code to help debugging.
19191         
19192         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
19193
19194         * mini-exceptions.c: Fix warning.
19195
19196 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19197
19198         * mini.c: Really fix build.
19199
19200         * mini-x86.c mini-amd64.c: Fix build.
19201
19202 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19203
19204         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
19205
19206         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
19207         some Interlocked methods as intrinsics.
19208
19209         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
19210         for Thread methods as well.
19211
19212         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19213
19214         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19215
19216         * mini-ia64.c mini-x86.c mini-amd64.c 
19217         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19218         OP_MEMORY_BARRIER.
19219         
19220         * mini.c (mono_init_exceptions): Fix build breakage.
19221
19222 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19223
19224         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19225         of instructions. Use the new ia64_unw_op macros for emitting unwind
19226         info.
19227
19228         * mini.c (mono_init_exceptions): Initialize exception handling
19229         related trampolines at startup.
19230
19231 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19232
19233         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19234
19235 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19236
19237         * mini.c: Handle type loading errors gracefully during compilation and
19238         throw the appropriate exception.
19239
19240 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19241
19242         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19243         for the mono binary.
19244
19245 2005-09-09  Martin Baulig  <martin@ximian.com>
19246
19247         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19248         the release.
19249
19250 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19251
19252         * mini-arm.h: use emulation for conv.r.un for the release.
19253
19254 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19255
19256         * mini-arm.c, objects.cs: more fixes and tests for them.
19257
19258 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19259
19260         * mini-arm.c: align structures to at least 4 bytes to be able
19261         to keep our current optimized memcpy.
19262
19263 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19264
19265         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19266
19267 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19268
19269         * mini.c: ignore SIGPIPE.
19270
19271 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19272
19273         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19274
19275         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19276
19277 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19278
19279         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19280
19281 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19282
19283         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19284         exception handling support.
19285         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19286         patch by Brian Koropoff <briank@marakicorp.com>).
19287
19288 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19289
19290         * mini.c: revert another 'optimization' which breaks when
19291         items on the eval stack need to be saved at a basic block end
19292         (bug #75940).
19293
19294 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19295
19296         * jit-icalls.c: for arrays, ensure we always provide
19297         lower bounds.
19298
19299 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19300
19301         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19302         
19303         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19304
19305 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19306
19307         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19308         arguments in their original register.
19309
19310 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19311
19312         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19313         memset/memcpy.
19314
19315         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19316         when ssapre is enabled.
19317
19318         * inssel-long.brg: Fix bug in previous patch.
19319
19320         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19321         multiplication by a constant.
19322
19323 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19324
19325         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19326         icc.
19327
19328         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19329         saving registers.
19330
19331 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19332
19333         * inssel-arm.brg: apply changes tested by Brian Koropoff
19334         <briank@marakicorp.com>.
19335
19336 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19337
19338         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19339         
19340 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19341
19342         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19343         to the same register if dreg is just a base register.
19344         (print_ins): Improve printing of membase opcodes.
19345
19346         * inssel-x86.brg: Add optimized ldind(reg) rules.
19347
19348         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19349
19350 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19351
19352         * mini.c: when running under valgrind, set the stack bottom for
19353         the GC at the actual approximate stack for the app (fixes running
19354         mono with valgrind).
19355
19356 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19357
19358         * mini.c: do no break at the first valuetype to init found
19359         (fixes bug #75791).
19360
19361 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19362
19363         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19364
19365 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19366
19367         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19368
19369 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19370
19371         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19372
19373 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19374
19375         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19376
19377         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19378         code.
19379
19380         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19381         code.
19382
19383         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19384         methods.
19385
19386 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19387
19388         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19389
19390 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19391
19392         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19393         in the tail recursion optimization.
19394
19395         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19396         debug info into the assembly file.
19397
19398         * iltests.il: Add test for filter regions.
19399
19400         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19401         initial stack of filter regions. Fixes #75755.
19402
19403 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19404
19405         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19406         stack requirements.
19407
19408 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19409
19410         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19411         the check for an already compiled method on non-ia64 platforms.
19412         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19413         proper domain.
19414
19415         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19416
19417         * inssel-x86.brg: Add some optimized call rules.
19418
19419 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19420
19421         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19422         method here.
19423
19424         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19425         mono_arch_patch_delegate_trampoline.
19426
19427         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19428
19429         * mini-trampolines.c: Fix build.
19430
19431         * mini-amd64.h: Add delegate trampolines.
19432
19433         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19434
19435         * inssel-amd64.brg: Add optimized call rules.
19436         
19437         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19438
19439         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19440
19441 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19442
19443         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19444         change.
19445
19446         * mini-ia64.c: Remove LMF fixmes.
19447
19448         * mini-ia64.h: Remove most fields from LMF.
19449
19450         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19451
19452         * mini-trampolines.c: Add support for IA64 function descriptors.
19453
19454         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19455         for IA64 function descriptors.
19456
19457 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19458
19459         * tramp-arm.c: patch the vtable for virtual calls. Added
19460         support code to register/unregister the LMF.
19461         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19462         more LMF work.
19463
19464 2005-08-19  Dick Porter  <dick@ximian.com>
19465
19466         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19467         bit value if needed.
19468
19469 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19470
19471         * mini.c (mini_get_method): Move handling of wrapper data here.
19472
19473         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19474
19475         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19476         virtual.
19477
19478         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19479         bblock->code does not remain empty.
19480
19481 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19482
19483         * arrays.cs: Add regression test for #75832.
19484
19485         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19486         rules. Fixes #75832.
19487
19488         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19489         instruction scheduling.
19490
19491 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19492
19493         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19494
19495 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19496
19497         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19498
19499         * mini-codegen.c: Fix VC build.
19500
19501         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19502
19503 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19504
19505         * mini.h: fix signature for mono_register_opcode_emulation.
19506
19507 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19508
19509         * mini.c: Get rid of most of the helper_sig_... constants using
19510         mono_create_icall_signature ().
19511
19512 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19513
19514         * jit-icalls.c (helper_ldstr): New helper function.
19515
19516         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19517
19518         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19519         throw, load the string using a helper call instead of creating a string object.
19520
19521         * aot.c: Update after LDSTR changes.
19522
19523         * mini.h: Bump AOT file version.
19524         
19525         * aot.c: Save class size info into the AOT file. Print more statistics during
19526         compilation.
19527
19528         * mini.h: Bump AOT file version.
19529
19530         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19531         ordering of disasm cases. Fixes #74957.
19532
19533 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19534
19535         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19536         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19537         the generic code needed for the ARM port.
19538
19539 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19540
19541         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19542         inssel-arm.brg: more ARM features and fixes.
19543
19544 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19545
19546         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19547         ARM port work in progress.
19548
19549 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19550
19551         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19552
19553         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19554
19555         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19556
19557         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19558
19559         * *-ia64.*: Ongoing IA64 work.
19560         
19561         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19562
19563 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19564
19565         * TODO: Remove out-of-data todo stuff.
19566
19567         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19568         dead code.
19569
19570         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19571
19572         * mini.h: Bump corlib version.
19573
19574 2005-07-27  Martin Baulig  <martin@ximian.com>
19575
19576         * mini-codegen.c
19577         (create_copy_ins): Added `const unsigned char *ip' argument; set
19578         `copy->cil_code' from it.
19579
19580 2005-07-27  Martin Baulig  <martin@ximian.com>
19581
19582         * mini-exceptions.c (mono_handle_exception): Don't call
19583         mono_debugger_handle_exception() for filters.
19584
19585 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19586
19587         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19588         as well.
19589
19590 2005-07-26  Martin Baulig  <martin@ximian.com>
19591
19592         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19593
19594         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19595         helper_compile_generic_method() if the method is actually virtual
19596         and non-final.
19597
19598 2005-07-26  Martin Baulig  <martin@ximian.com>
19599
19600         * mini.c
19601         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19602         public; this is now accessed directly by the debugger.
19603         (mono_generic_trampoline_code): Removed.
19604
19605         * debug-mini.c
19606         (mono_debug_init_method): Also add interncalls and wrappers.
19607
19608 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19609
19610         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19611
19612 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19613
19614         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19615
19616 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19617
19618         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19619
19620 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19621
19622         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19623         getting TLS offsets on AMD64 too.
19624
19625 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19626
19627         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19628
19629 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19630
19631         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19632         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19633
19634 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19635
19636         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19637
19638         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19639         to mini.c.
19640
19641         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19642         mono_sparc_is_virtual_call ().
19643         
19644         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19645
19646         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19647         trampoline parameters.
19648
19649         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19650         
19651         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19652         to mono_arch_get_vcall_slot_addr.
19653
19654         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19655         trampoline code.
19656
19657         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19658
19659 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19660
19661         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19662
19663 2005-07-19  Martin Baulig  <martin@ximian.com>
19664
19665         * exceptions-amd64.c (throw_exception): Call
19666         mono_debugger_throw_exception() here like we're doing it on i386.
19667
19668 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19669
19670         * mini-ia64.c: Add optimized TLS access support.
19671
19672 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19673
19674         * mini-exceptions.c: Ongoing IA64 work.
19675
19676         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19677
19678         * mini.c: Use the default optimization set when embedding. Fixes
19679         #75194.
19680
19681 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19682
19683         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19684         of trampolines to a separate file.
19685
19686         * mini-trampolines.c: New file.
19687
19688         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19689         separate file.
19690         
19691         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19692         amd64/ia64 code.
19693
19694         * mini-codegen.c: Fix cygwin build.
19695
19696 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19697
19698         * mini.c: Add some minor changes needed by the IA64 port.
19699
19700         * *-ia64.*: Ongoing IA64 work.
19701
19702 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19703
19704         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19705         trampolines into arch-independent and arch-dependent parts.
19706
19707         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19708
19709 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19710
19711         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19712
19713         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19714         the xp-regalloc-branch for amd64.
19715
19716         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19717         xp-regalloc-branch for x86.
19718
19719 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19720
19721         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19722
19723 2005-07-06  Martin Baulig  <martin@ximian.com>
19724
19725         * mini.c
19726         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19727         (mono_jit_runtime_invoke): Likewise.
19728
19729 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19730
19731         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19732         on x86 too.
19733         
19734         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19735         without loading their metadata. Reorganize the file format so exception handling+
19736         debug info is kept separate from normal method info. Create MonoJitInfo 
19737         structures for methods lazily.
19738
19739         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19740         loading metadata.
19741         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19742
19743         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19744
19745         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19746         in AOT code.
19747
19748         * mini.h: Bump AOT file version.
19749
19750 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19751
19752         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19753
19754 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19755
19756         * Makefile.am (check-local): Call semdel-wrapper.
19757
19758 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19759
19760         * mini-x86.c: Revert the last change as it seems to break the build..
19761
19762 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19763
19764         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19765         
19766         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19767
19768 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19769
19770         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19771         outside of the macro, so strange stuff doesn't happen with gcc4
19772         (NEW_AOTCONST_TOKEN): Likewise.
19773
19774 2005-06-28  Martin Baulig  <martin@ximian.com>
19775
19776         * mini.c (mini_class_is_system_array): New static method; use this
19777         instead of `klass->parent == mono_defaults.array_class' everywhere
19778         since this also works for the new generic array class.
19779
19780 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19781
19782         * inssel.brg: Remove warnings.
19783
19784 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19785
19786         * mini-ia64.c: Ongoing IA64 work.
19787
19788         * basic-float.cs: Add float->i1 conversion test.
19789
19790         * iltests.il: Add conv.u4 test.
19791
19792 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19793
19794         * inssel-long.brg: Fix bug caused by last change.
19795
19796 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19797
19798         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19799         BSDs.  Allows the x86 JIT to work on OSX86
19800
19801 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19802
19803         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19804         u4->i8 conversion.
19805
19806         * mini-ia64.c: Ongoing IA64 work.
19807
19808 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19809
19810         * mini-ia64.c: Ongoing IA64 work.
19811
19812         * driver.c: Clean up jit_code_hash as well when using --regression.
19813
19814         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19815
19816         * basic-long.cs: Add tests for long->u4 conversion.
19817
19818 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19819
19820         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19821         that we do not depend on undefined C behavior: the order stuff
19822         gets evaluated within an expression. Fixes mono when compiled on
19823         GCC 4.
19824
19825 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19826
19827         * *-ia64.*: Ongoing IA64 work.
19828
19829         * aot.c: Lower memory usage while loading AOT methods.
19830
19831         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19832
19833         * mini.h: Bump AOT file format version.
19834
19835 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19836
19837         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19838
19839 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19840
19841         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19842         not on callee assembly). Fixed some comments.
19843
19844 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19845
19846         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19847         it gets proper disassembly.
19848         (emit_method_info): Remove some dead code.
19849
19850         * mini.c (mini_method_compile): Allways allocate the GOT var in
19851         mono_method_to_ir for emulating opcodes.
19852
19853 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19854
19855         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19856         before freeing the code memory. Fixes #74990.
19857
19858         * objects.cs: Add regression test for #74992.
19859
19860         * liveness.c: Extend live ranges of arguments to the beginning of the
19861         method. Fixes #74992.
19862
19863         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19864         so it points into the faulting instruction.
19865
19866 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19867
19868         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19869
19870         * *-ia64.*: Ongoing IA64 work.
19871
19872         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19873
19874 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19875
19876         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19877
19878         * *-ia64.*: Ongoing IA64 work.
19879
19880 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19881
19882         * basic-long.cs: Add tests for add/sub.ovf.
19883
19884         * basic.cs: Add tests for sub.ovf.
19885
19886         * *-ia64.*: Ongoing IA64 work.
19887
19888 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19889
19890         * *-ia64.*: Ongoing IA64 work.
19891
19892         * basic.cs: Add conv.ovf.i4.un test.
19893
19894 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19895
19896         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19897         
19898 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19899
19900         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19901
19902 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19903
19904         * *-ia64.*: Ongoing IA64 work.
19905
19906 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19907
19908         * trace.[ch]:
19909         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19910
19911 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19912
19913         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19914
19915 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19916
19917         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19918
19919         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19920         of a call is callable by a near call.
19921
19922 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19923
19924         * mini-ia64.c: Ongoing IA64 work.
19925
19926 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19927
19928         * genmdesc.c: Make the generated array non-static.
19929
19930         * inssel-long.brg: Fix LSHR_IMM rule.
19931
19932         * *-ia64.*: Ongoing IA64 work.
19933
19934         * *-ia64.*: Ongoing IA64 work.
19935
19936 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19937
19938         * *-ia64.*: Ongoing IA64 work.
19939
19940         * *-ia64.*: Ongoing IA64 work.
19941         
19942         * mini-ia64.c: Ongoing IA64 work.
19943
19944         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19945
19946 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19947
19948         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19949         
19950         * objects.cs basic-long.cs: Move some tests to objects.cs.
19951
19952 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19953
19954         * *-ia64.*: Ongoing IA64 work.
19955
19956         * iltests.il: Add a new test.
19957
19958         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19959         newobj. Fixes #75042.
19960
19961 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19962
19963         * *-ia64.*: Ongoing IA64 work.
19964         
19965         * *-ia64.*: Ongoing IA64 work.
19966         
19967         * *-ia64.*: Ongoing IA64 work.
19968
19969         * basic.cs objects.cs: Move tests accessing static variables as well.
19970
19971         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19972
19973 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19974
19975         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19976
19977         * driver.c: Always print failed tests.
19978
19979         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19980         frame pointer.
19981
19982         * *ia64*: Ongoing IA64 work.
19983
19984 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19985
19986         * basic.cs: Add tests for add.ovf. Fix warnings.
19987
19988 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19989
19990         * driver.c (mono_main): Avoid crash if no argument is passed to
19991         --break;  Do not use g_error, but f_printf.   And fix all other
19992         ocurrences of the same crash.
19993
19994 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19995
19996         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19997         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19998         Fixes #74742.
19999
20000 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
20001
20002         * *-ia64.*: Add beginnings of IA64 backend.
20003
20004         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
20005
20006 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
20007
20008         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
20009         Fixes #74925.
20010
20011         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
20012
20013         * mini-amd64.c: Fix a warning.
20014
20015 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
20016
20017         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
20018         in float_neg. Fixes #74897.
20019
20020         * mini-amd64.c (emit_call): Fix another near call bug.
20021
20022 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
20023
20024         * declsec.c: Keep the appdomain information in the structure. Added a 
20025         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
20026         value gets overwritten).
20027         * declsec.h: Set the default MonoArray for the the stack to 6. Added
20028         an MonoAppDomain member to MonoSecurityFrame.
20029         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
20030         used in the stack walk. Now use a MonoArray which grow (double) when
20031         it gets full.
20032
20033 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
20034
20035         * mini.c: Re-enabled runtime cleanup, since running threads should
20036         now properly stop when exiting.
20037
20038 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
20039
20040         * mini-codegen.c: New file contaning the arch-independent local
20041         register allocator. Not used by any architectures yet.
20042
20043         * mini.h linear-scan.c: Merge some changes from the 
20044         mini-xp-local-regalloc branch.
20045
20046 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
20047
20048         * mini-amd64.c (emit_call): Fix calls to native functions when the
20049         runtime is compiled as a shared library. Fixes #74756.
20050
20051         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
20052         on a literal field. Fixes #74751.
20053
20054 2005-04-25  Raja R Harinath  <rharinath@novell.com>
20055
20056         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
20057
20058 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
20059
20060         * objects.cs: Add missing null casting test.
20061
20062 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
20063
20064         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
20065         in wrapper methods. Also rename 'address' variable to 'offset'.
20066
20067 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
20068
20069         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
20070         warnings.
20071         
20072         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
20073
20074         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
20075         work on windows.
20076
20077 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
20078
20079         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
20080
20081 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
20082
20083         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
20084         just the last bytes.
20085
20086 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
20087
20088         * aot.c (mono_compile_assembly): Fix warning.
20089
20090         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
20091         by the _MSC_VER stuff.
20092
20093 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
20094
20095         * inssel-long.brg: Fix #74588.
20096
20097         * cpu-amd64.md: Fix #74591.
20098
20099         * iltests.il: Add new regression tests.
20100
20101 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
20102
20103         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
20104         valuetype.
20105
20106 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
20107
20108         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
20109
20110         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
20111         from Bill Middleton <flashdict@gmail.com>.
20112
20113 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
20114
20115         * arrays.cs: Add new regression test. Fix warnings.
20116
20117 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
20118
20119         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
20120         and leakage in CKFINITE.
20121
20122         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
20123         this to a null op since it is called on amd64 too.
20124
20125         * exceptions-amd64.c (get_throw_trampoline): Align stack.
20126
20127         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
20128         body since this is not used on amd64.
20129         
20130         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
20131
20132         * mini-amd64.c: Remove obsolete fixmes.
20133
20134         * mini.c (print_method_from_ip): Fix debugging support.
20135
20136 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20137
20138         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
20139         so that expressions that don't give much gain are not reduced.
20140         * ssapre.h: Likewise.
20141
20142 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
20143
20144         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
20145
20146         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
20147
20148         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
20149
20150 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
20151
20152         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
20153
20154         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
20155
20156 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
20157
20158         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
20159         stack touching.
20160
20161         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
20162
20163         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
20164
20165         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
20166
20167         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
20168         MONO_ARCH_USE_SIGACTION. Fixes #74252.
20169
20170         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
20171
20172         * mini-x86.c: Fix up stack overflow handling.   
20173
20174         * exceptions.cs: Add new regression test.
20175
20176 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
20177
20178         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
20179         mono_jit_thread_attach.
20180
20181         * mini.c (mono_method_to_ir): Verify called method is not abstract.
20182
20183 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20184
20185         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
20186         avoid calling constructors using callvirt.
20187
20188         * inssel.brg: Fix #74073.
20189
20190 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
20191
20192         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
20193         compilation with non-GCC compilers.
20194         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
20195         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
20196
20197 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
20198
20199         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
20200         klass->interface_offsets (will likely fix bug#74073).
20201
20202 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20203
20204         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
20205
20206 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
20207
20208         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
20209         to amd64_div_reg_size ().
20210         
20211         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
20212
20213 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20214
20215         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20216
20217 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20218
20219         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20220
20221 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20222
20223         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20224         
20225         * mini.c (mono_precompile_assembly): Load and precompile referenced
20226         assemblies as well. Fixes #74015.
20227
20228 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20229
20230         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20231
20232 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20233
20234         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20235         a lot of checks and (anyway) permissions cannot work until corlib is 
20236         loaded.
20237
20238 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20239
20240         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20241
20242 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20243
20244         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20245         calls (fixes bug#72824).
20246
20247 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20248
20249         * mini.c: fix tail recursion elimination (see test in bug#73936).
20250
20251 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20252
20253         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20254         some fp functions in sse2 mode.
20255
20256 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20257
20258         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20259
20260 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20261
20262         * mini.h mini.c: Add mono_get_jit_tls_key ().
20263
20264         * mini-x86.c: Enable fast TLS support on windows.
20265
20266 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20267
20268         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20269         * mini.c: Check for p/invoke method when generating code. If a
20270         p/invoke method, or it's class, isn't decorated with [Suppress
20271         UnmanagedCodeSecurity] then generate code to call System.Security.
20272         UnmanagedDemand (only if the security manager is active).
20273
20274 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20275
20276         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20277         last change as it seems to cause strange crashes.
20278         
20279 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20280
20281         * *.c: handle unsafe function pointers where needed.
20282
20283 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20284
20285         * mini.c (mono_jit_free_method): Remove the fixme too.
20286
20287 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20288
20289         * mini.c: As discussed, make the code actually free the delegate
20290         thunk now, to enable the debugging of delegate problems, use
20291         MONO_DEBUG=1 when running Mono. 
20292
20293         This takes also care of parts of the leaks as seen by Joe.
20294
20295 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20296
20297         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20298         thread_tls_offset calculation.
20299
20300 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20301
20302         * declsec.c: Reworked linkdemand checks for icall. The previous code
20303         was using the declaration code (untrusted) and didn't work as expected
20304         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20305         specific case.
20306
20307 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20308
20309         * iltests.il: Add new localloc test.
20310
20311         * mini-amd64.c: Handle large stack allocations the same way as on
20312         windows if stack overflow handling is working.
20313         
20314         * mini-amd64.c: Allocate the signal stack using mmap.
20315
20316         * mini.c (sigsegv_signal_handler): Fix reading of context.
20317
20318         * mini-exceptions.c: Fix up stack overflow handling.
20319
20320         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20321
20322         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20323
20324         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20325
20326         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20327
20328         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20329         tramp_init functions as they are no longer needed.
20330
20331 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20332
20333         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20334         
20335         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20336
20337         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20338         
20339         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20340         support that now.
20341
20342         * mini-ops.h: Add OP_LMUL_IMM.
20343
20344         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20345         long mul/div opcodes as intrinsic.
20346
20347         * mini-amd64.c (emit_call): Handle the case when the callee might be
20348         an AOT method.
20349
20350 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20351
20352         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20353         extra safe.
20354         
20355         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20356
20357         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20358
20359 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20360
20361         * mini.c (mono_codegen): Don't leak here, to help people running
20362         monogrind.
20363
20364 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20365
20366         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20367         conversions in sse2 mode.
20368
20369         * basic-float.cs: Add regression test.
20370         
20371         * mini-amd64.c: Reenable sse2.
20372
20373 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20374
20375         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20376
20377 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20378
20379         * driver.c: Copyright text should include 2005.
20380         
20381 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20382
20383         * cpu-amd64.md (load_membase): Fix more max lengths.
20384
20385 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20386
20387         * cpu-amd64.md (load_membase): Fix max length.
20388
20389         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20390
20391         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20392
20393         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20394         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20395
20396         * basic-float.cs: Add rounding regression test.
20397
20398         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20399
20400 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20401
20402         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20403         structures in registers for pinvoke wrappers.
20404
20405 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20406
20407         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20408
20409 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20410
20411         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20412         wrapper to mono_jit_thread_attach.
20413
20414         * mini.c (mini_jit_thread_attach): New jit icall.
20415
20416         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20417         native->managed wrappers.
20418
20419         * exceptions.cs: Add new regression test.
20420
20421         * mini.c (optimize_branches): Check regions in the cbranch to throw
20422         block case as well. Fixes #73242.
20423
20424 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20425
20426         * mini.c: thread safety fixes.
20427
20428 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20429
20430         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20431         patching stuff, since delegates use jump trampolines so there is
20432         no caller.
20433
20434         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20435         jump trampolines.
20436         
20437         * tramp-amd64.c: Fix build.
20438
20439         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20440         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20441
20442         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20443         Rename this to mono_arch....
20444         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20445
20446         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20447
20448         * mini-amd64.c (emit_call): If both the caller and the callee is
20449         guaranteed to have 32 bit addresses, emit a normal call.
20450
20451         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20452
20453         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20454         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20455         method_ptr inside delegates.
20456
20457 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20458
20459         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20460         invalidated. Fixes #73001.
20461
20462         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20463
20464         * mini-x86.c: Only use stdcall for pinvokes on windows.
20465
20466 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20467
20468         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20469         * mini-x86.c: remove unreliable __thread var offset detection,
20470         use the correct accessors and enable by default.
20471
20472 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20473
20474         * mini.c (mono_jit_free_method): Fix memory leak.
20475
20476 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20477
20478         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20479
20480 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20481
20482         * cpu-amd64.md: Fix lengths of atomic opcodes.
20483
20484 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20485
20486         * driver.c: try to not imply using ICU is any good.
20487
20488 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20489
20490         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20491         functions as inline ops.
20492
20493         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20494         some Interlocked functions as inline ops.
20495
20496         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20497
20498         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20499
20500         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20501
20502         * mini.c: Add support for OP_NOT_TAKEN.
20503
20504         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20505         structures in registers for pinvoke wrappers.
20506
20507         * mini-amd64.c: Fix warnings.
20508
20509 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20510
20511         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20512
20513         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20514
20515         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20516         address instead of loading the address from it.
20517
20518         * mini-x86.c: Add support for returning small structs in registers
20519         on Win32. Fixes part of #70864.
20520         
20521 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20522
20523         * trace.c (get_token): Improve error checking.
20524
20525 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20526
20527         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20528
20529 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20530  
20531         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20532         it can be reused for MonoClass.
20533         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20534         _LINKDEMAND.
20535
20536 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20537
20538         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20539         instead of a MonoReflectionMethod. The method information wasn't used
20540         when displaying SecurityException details (but will be now).
20541
20542 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20543
20544         * Makefile.am : windows build fix.
20545
20546 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20547
20548         * iltests.il: Add new regression test.
20549
20550         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20551         #72522.
20552
20553 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20554  
20555         * mini.c: Moved linkdemand check into helper function check_linkdemand
20556         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20557         LDFTN, LDVIRTFTN).
20558
20559 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20560
20561         * declsec.c: Added statistics counter for different kinds of 
20562         LinkDemands.
20563         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20564         (and commented) declaration.
20565         * mini.c: Added statistics counter for security Demand code 
20566         generation. Added display of security statistics.
20567
20568 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20569
20570         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20571         Fix compilation errors under gcc-2.95.
20572
20573 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20574
20575         * mini.c, driver.c: Use the new jit trampoline hashtable
20576
20577 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20578
20579         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20580
20581 2005-02-11  Martin Baulig  <martin@ximian.com>
20582
20583         * debug-mini.c (mono_debug_close_method): Free the line number array.
20584
20585 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20586
20587         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20588         icalls.
20589
20590         * mini.h: Bump AOT file format version. 
20591
20592 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20593
20594         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20595         APTC and P/Invoke.
20596         * declsec.h: Added macros to get/set lazyly initialized security 
20597         informations about assemblies. Added new enum for different type of
20598         possible LinkDemand violation. Added function to check LinkDemands.
20599         * mini.h: Added a field to MonoCompile to hold any security violation
20600         detected when JITting a method (so it can be thrown later).
20601         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20602         and CEE_CALLVIRT. Added code to throw exception at the end of
20603         mini_method_compile (note: the exception is unhandled right now).
20604
20605 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20606
20607         * mini.c, jit-icalls.c: use the managed implementation of
20608         memset for initobj and memset, to avoid managed <-> unmanaged
20609         transitions.
20610
20611 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20612
20613         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20614         optimization if it would need a GOT var.
20615
20616         * basic.cs: Add tests for constant propagation and switch statements.
20617
20618         * ssa.c: Fix out-of-range constant propagation and switch statements.
20619
20620 2005-02-09    <vargaz@freemail.hu>
20621
20622         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20623
20624 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20625
20626         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20627
20628 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20629
20630         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20631
20632 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20633
20634         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20635         arithmetic operations.
20636
20637 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20638
20639         * mini-ppc.c: add a workaround for broken user code that
20640         DllImports vararg functions with non-vararg signatures.
20641
20642 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20643
20644         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20645         meaningfull error message for assemblies written in Managed C++.
20646
20647         * tramp-amd64.c mini-amd64.h: Add support for 
20648         create_trampoline_from_token ().
20649
20650         * aot.c mini-x86.c abcremoval.c: Applied patch from
20651         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20652
20653 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20654
20655         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20656         which takes a MonoImage/token as parameter instead of a MonoMethod.
20657
20658         * aot.c: Use the new trampoline for initializing vtables.
20659
20660         * aot.c: Add support for ldfld/stfld_remote wrappers.
20661
20662         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20663         rules for compare <MEM>, IMM.
20664
20665         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20666
20667         * aot.c: Handle inherited finalizers correctly.
20668
20669 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20670
20671         * inssel.brg (stmt): Add a missing _setup_... ().
20672
20673         * aot.c: Save some parts of the class state to the AOT file and use it
20674         to recompute that state when a class is initialized.
20675
20676         * mini.c: Install AOT hooks into the runtime.
20677
20678         * mini.h: Bump AOT file format version.
20679         
20680         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20681         Fixes #72148.
20682
20683         * iltests.il: Add new test.
20684
20685 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20686
20687         * mini.c: fix typo.
20688
20689 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20690
20691         * mini.c: setup the statistical profiler in the thread attach
20692         callback to cope with the new single thread code.
20693
20694 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20695
20696         * mini-ppc.c: ensure we have enough room for the profiler
20697         calls (fixed bug#72084).
20698
20699 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20700
20701         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20702         it.
20703
20704 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20705
20706         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20707
20708 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20709
20710         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20711         to succesfully execute parrotbench).
20712         * ssapre.h: Likewise.
20713
20714 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20715
20716         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20717         variable for stores to method arguments (fixes a SSAPRE issue).
20718
20719 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20720
20721         * mini.c: handle value types in dup, fixes gen-112.cs.
20722
20723 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20724
20725         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20726         sequence for calls in dynamic methods to avoid thunks.
20727
20728 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20729
20730         * mini.c: correctly remove dynamic methods from the hashtable.
20731
20732 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20733
20734         * driver.c: Disabled SSAPRE until fix the bug that appears
20735         in IronPython's parrotbench.
20736
20737 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20738
20739         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20740
20741         * mini.c (mono_method_to_ir): Revert the previous change.
20742         
20743         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20744         when AOT compiling.
20745
20746         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20747         mono_jit_info_table_find () etc. when running under valgrind.
20748
20749         * inssel.brg: Fix warnings.
20750
20751         * mini-exceptions.c: Fix warnings.
20752
20753 2005-01-31  Martin Baulig  <martin@ximian.com>
20754
20755         * driver.c (compile_all_methods_thread_main): Don't try to compile
20756         generic methods or anything which has type parameters.
20757
20758 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20759
20760         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20761
20762         * TestDriver.cs: Add --verbose flags.
20763
20764         * graph.c ssa.c: Fix 64 bit warnings.
20765         
20766         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20767         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20768         Fix 64 bit warnings.
20769
20770         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20771         variable not spotted by gcc.
20772         
20773         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20774         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20775         X86_COMPARE_MEMBASE opcodes.
20776
20777         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20778
20779 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20780
20781         * *: MonoMethod->signature might be NULL now. You *MUST* use
20782         mono_method_signature.
20783
20784 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20785
20786         * driver.c (compile_all_methods_thread_main): Compile the methods
20787         without invoking cctors.
20788
20789 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20790
20791         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20792         * basic-calls.cs: test for the above.
20793
20794 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20795
20796         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20797         MonoJitInfo changes.
20798
20799 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20800
20801         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20802         eagerly if it contains dynamic methods.
20803         
20804         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20805
20806         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20807         trace, it is now computed by an icall from trace_ips.
20808         
20809         * mini-exceptions.c: Fix a warning.
20810
20811 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20812
20813         * mini-exceptions.c: don't bother getting stack trace info if
20814         it's not going to be used.
20815
20816 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20817
20818         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20819         ssapre-mini-ops.h.
20820
20821 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20822
20823         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20824
20825         * aot.c: Avoid calling mono_method_get_header () if not needed.
20826
20827         * mini.h: Bump AOT file format version.
20828         
20829         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20830
20831         * mini.c (mono_print_tree): Print more info for calls.
20832
20833 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20834
20835         * declsec.h: Remove warning by adding missing include for marshal.h
20836
20837 2005-01-26  Martin Baulig  <martin@ximian.com>
20838
20839         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20840         `ip' twice.
20841
20842 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20843
20844         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20845         flags.
20846
20847         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20848
20849         * aot.c (mono_compile_assembly): Fix a warning.
20850
20851 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20852
20853         * declsec.c: Look for security attributes on the original MonoMethod 
20854         (and not the wrapped one). This fix permissions on icalls.
20855
20856 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20857
20858         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20859
20860         * mini.c (mono_allocate_stack_slots): Add a fixme.
20861
20862         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20863
20864 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20865
20866         * inssel.brg: optimize casts of sealed types (more
20867         optimizations waiting for fixes in remoting).
20868
20869 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20870
20871         * inssel.brg (stmt): Add another dummy rule.
20872
20873         * driver.c: Fix warnings.
20874
20875         * driver.c (mono_main): If running under valgrind, instruct glib to use
20876         the system allocation functions so valgrind can track the memory
20877         allocated by the g_... functions.
20878
20879         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20880
20881         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20882
20883         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20884
20885         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20886         variables in try regions.
20887
20888         * mini.c (mini_method_compile): Don't disable optimizations on large
20889         methods when AOT compiling.
20890
20891         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20892         allocate stack slots. Not yet used.
20893
20894 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20895
20896         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20897
20898 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20899
20900         * mini-ppc.c: make the branch info relative as the code
20901         buffer can be reallocated.
20902
20903 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20904
20905         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20906         * driver.c: Removed the AOT/security restriction. Now initialize the
20907         security manager (in metadata) if --security is used.
20908         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20909         rather than the pointer to declarative security, when AOT is used.
20910
20911 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20912
20913         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20914         basic blocks, reduced intrinsic exception throwing code size.
20915
20916 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20917
20918         * driver.c (mini_usage): Reorder the usage screen.
20919
20920 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20921
20922         * mini.c (mono_resolve_patch_target): Fix warning.
20923
20924 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20925
20926         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20927         previous patch.
20928
20929         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20930
20931         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20932         breaks the amd64 build.
20933
20934         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20935         register allocation. Fixes #71454.
20936
20937         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20938
20939         * arrays.cs: Add new regression test.   
20940
20941 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20942
20943         * ssapre.c: Turned usage of snprintf to GString.
20944         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20945         (I left it on by mistake in my previous commit).
20946
20947 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20948
20949         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20950         on cond branch optimization (fixes bug# 71515).
20951
20952 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20953
20954         * abcremoval.c: Fixed bug 71062.
20955         * abcremoval.h: Likewise.
20956
20957 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20958
20959         * mini.c: Added a new functionality to optimize_branches, the removal
20960         of useless basic blocks, and fixed some problem in the removal of
20961         critical edges; some utility functions added for both purposes.
20962         * ssapre.c: Added complex expression support, and fixed bug 70637.
20963         * ssapre.h: Likewise.
20964         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20965         enabled in SSAPRE.
20966         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20967         * driver.c: Re-enabled SSAPRE.
20968
20969 2005-01-19  Martin Baulig  <martin@ximian.com>
20970
20971         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20972         the result of mono_get_method_constrained().
20973
20974 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20975
20976         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20977         manager.
20978
20979 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20980
20981         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20982         be detected.  Fixes #59296.
20983
20984 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20985
20986         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20987         which can happen. Fixes #71361.
20988
20989 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20990
20991         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20992         manager.
20993
20994 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20995
20996         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20997         appdomain-unload.exe to fail.
20998         
20999         * mini.c: Fix some memory leaks.
21000
21001 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
21002
21003         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
21004         Fixed bug and sped up some codepaths.
21005
21006 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
21007
21008         * mini.c: Fix some memory leaks.
21009
21010         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
21011         conversion.
21012
21013         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
21014
21015         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
21016         #71320.
21017
21018         * iltests.il: Add regression test for #71320.
21019
21020 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
21021
21022         * mini.c (mono_codegen): Fix installation of profiler hooks.
21023
21024         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
21025
21026 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
21027
21028         * mini.h, mini.c, cfold.c: optimize access to enum
21029         readonly fields, too. Eval conditional branches if possible
21030         to perform unreachable code removal in more cases.
21031
21032 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
21033
21034         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
21035
21036         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
21037         code manager.
21038
21039         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
21040         WinXP DEP. Fixes #71244.
21041
21042 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
21043
21044         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
21045
21046 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
21047
21048         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
21049
21050 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
21051
21052         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
21053         changes.
21054
21055         * mini.h: Bump AOT version.
21056
21057         * mini.h (MonoCompile): Change exvar to a hash table.
21058
21059         * mini.c: Allocate a separate exvar for each handler block.
21060
21061         * mini.c: Get rid of the computation of filter_lengths, its not needed.
21062
21063         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
21064         ex var with the pending exception and only throw if the two are equal.
21065         Fixes #68552.
21066         
21067         * exceptions.cs: Add tests for rethrow and nested catch clauses.
21068
21069         * mini-x86.c: Fix warnings.
21070
21071         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
21072         used by all the ports now.
21073
21074         * aot.c: Add write-symbols and save-temps options.
21075
21076 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
21077
21078         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
21079
21080 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
21081
21082         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
21083         operations.
21084
21085         * tramp-s390.c: Check vtable slot belongs to the domain.
21086
21087         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
21088         as per other platforms.
21089
21090         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
21091
21092 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
21093
21094         * driver.c: we don't run the Main() code in a subthread anymore.
21095
21096 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
21097
21098         * mini.c: added experimental rtc support in the statistical
21099         profiler: if the user has the permission, more accurate statistics
21100         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
21101         The MONO_RTC value must be restricted to what the linux rtc allows:
21102         power of two from 64 to 8192 Hz.
21103
21104 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
21105
21106         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
21107
21108 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
21109
21110         * mini-ppc.c: better icache flush for smp.
21111
21112 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
21113
21114         * mini-amd64.c (emit_move_return_value): Fix memory leak.
21115
21116         * mini-x86.c (get_call_info): Add the get_call_info () code from the
21117         amd64 port, not yet used.
21118
21119 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21120
21121         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
21122         a struct type.
21123
21124 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
21125
21126         * driver.c: Added --security option to activate the security manager.
21127         Right now this will allow code generation for declarative demands and
21128         is disabled when AOT is specified.
21129         * mini.c: Add code generation for declarative security demands.
21130         * mini.h: Add mono_use_security_manager as an extern gboolean.
21131
21132 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21133
21134         * aot.c (mono_compile_assembly): Speed up compilation a bit by
21135         emitting more dense assembly code.
21136
21137         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
21138         exception throwing stuff.
21139
21140 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
21141
21142         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
21143         dead code.
21144
21145         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
21146         left in by mistake.
21147
21148         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
21149         fixed.
21150
21151         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
21152
21153         * tramp-*.c: Only patch vtable slots if the object is in the current
21154         domain. Fixes appdomain-unload.exe.
21155
21156         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
21157         
21158         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
21159         x86 branch.
21160
21161 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21162
21163         * mini.c (reverse_branch_op): New helper function.
21164
21165         * mini.c (optimize_branches): Run the new optimization only on 
21166         platforms which support it. Also reverse all kinds of branches.
21167
21168         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
21169
21170         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
21171         a throw statement.
21172
21173         * mini.c (optimize_branches): Reverse not-equals branches if the false
21174         bblock is a throw. This happens a lot of time with argument checking in
21175         corlib.
21176
21177         * mini.c (mono_codegen): Add support for placing basic blocks after
21178         the function epilogue.
21179
21180         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
21181         function epilogue.
21182         
21183 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
21184
21185         * mini.c (setup_stat_profiler): Only set this up if the platform
21186         supports ITIMER_PROF.
21187
21188 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21189
21190         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
21191         previous patch.
21192
21193         * inssel.brg: Fix a warning.
21194
21195 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
21196
21197         * mini.c: added support for statistical profiler 
21198         (run with: --profile=default:stat).
21199
21200 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
21201
21202         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
21203
21204         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
21205
21206         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
21207         related to global registers from the amd64 port.
21208
21209 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21210
21211         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
21212
21213         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21214         with global registers.
21215         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21216
21217         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21218
21219 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21220
21221         * debug-mini.c (encode_value): Fix off-by-one.
21222
21223         * aot.c (encode_value): Likewise.
21224
21225         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21226
21227 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21228
21229         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21230         AOT.
21231
21232         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21233         
21234         * aot.c (emit_method_info): Increase size of temp buffer.
21235
21236         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21237         the AOT case.
21238
21239 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21240
21241         * aot.c (emit_method_info): Fix build.
21242         
21243         * aot.c: Further rework of the AOT file format to reduce the size of
21244         the method info data.
21245
21246         * mini.h: Bump AOT file format version.
21247
21248 2004-12-27  Martin Baulig  <martin@ximian.com>
21249
21250         * mini.c (mini_get_method): New static method; call
21251         mono_get_method_full() and mono_get_inflated_method().
21252         (mono_method_to_ir): Use mini_get_method() instead of
21253         mono_get_method_full(). 
21254
21255 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21256
21257         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21258
21259 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21260
21261         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21262
21263         * inssel-amd64.brg: Add some optimization rules.
21264
21265 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21266
21267         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21268         standard not GC'd stuff is fine.
21269
21270 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21271
21272         * aot.c: Rework the AOT file format to get rid of most of the global
21273         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21274
21275         * mini.h: Bump AOT file format version.
21276         
21277 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21278
21279         * mini.h: Bump AOT file format version.
21280
21281         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21282         address is inside a GOT.
21283
21284         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21285
21286         * cpu-pentium.md: Increase the maximum size of some instructions which
21287         might involve a got access.
21288         
21289         * mini.c (get_method_from_ip): Another debug helper function.
21290
21291         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21292         when got var accesses are created during the decompose phase.
21293
21294         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21295
21296         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21297         argument mini_compile_method and to MonoCompile, and use this to
21298         determine whenever a given method is compiled for AOT. This allows the
21299         other methods compiled during AOT compilation to be free of AOT stuff,
21300         so the backends does not need to add special support for them by
21301         creating a fake GOT etc.
21302
21303         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21304         longer needed.
21305
21306 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21307
21308         * mini.c (mono_method_to_ir): It turns out that some of the
21309         x-appdomain wrappers are lax with types, so just ignore this for
21310         all wrappers.
21311
21312         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21313         at the vtable->klass. If it is non-shared code we can just use the
21314         vtable.
21315
21316 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21317
21318         * mini-ppc.c: access MonoDomain from tls, too.
21319
21320 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21321
21322         * declsec.c: Removed unused variable (and related warning ;-)
21323
21324 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21325
21326         * iltests.il: New test for LDELEMA on an array of ref types.
21327
21328         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21329         all ldelema's on reftypes.
21330         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21331         it was the wrong place to put it.
21332
21333         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21334         register to pop to make this cleaner, at the request of Paolo.
21335
21336 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21337
21338         * mini-ops.h (OP_GETHASHCODE): New op.
21339
21340         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21341
21342         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21343         operation.
21344
21345         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21346         by 25%.
21347         
21348         * mini-x86.c (mono_arch_output_basic_block): Rather than
21349
21350         add ebp, 4
21351
21352         Emit
21353
21354         pop edx
21355
21356         The first is 3 bytes while the second is 1. This saves 36 kb on
21357         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21358         see a small boost because of icache locality.
21359
21360         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21361
21362 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21363
21364         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21365         started code sharing with the generic code.
21366
21367 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21368
21369         * mini-ppc.c, cpu-g4.md: added code for direct access to
21370         tls data slots.
21371
21372 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21373
21374         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21375          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21376         to OP_TLS_GET.
21377
21378 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21379
21380         * declsec.c|h: Added functions to cache the declarative stack modifiers
21381         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21382         structure.
21383         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21384         created. Register internal calls for System.Security.SecurityFrame::
21385         _GetSecurityFrame and _GetSecurityStack.
21386         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21387         the definitions for the new stack walk/callback mechanism.
21388         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21389         first security frame for LinkDemands and InheritanceDemands) and
21390         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21391         from lupus.
21392         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21393         walk initialization (lupus).
21394
21395 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21396
21397         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21398         idiom.
21399         (handle_loaded_temps): Do not create a temporary variable for
21400         things that we know are temps. They will never be modified.
21401         (mono_spill_call): Set MONO_INST_IS_TEMP
21402         (mono_emulate_opcode): ditto
21403         (emit_tree): ditto
21404         (mono_method_to_ir.CEE_DUP): ditto
21405
21406 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21407
21408         * mini.c (type_to_eval_stack_type): Make this handle the void type
21409         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21410         (emit_tree): use ip_in_bb to special case some common idioms
21411         Update all callers to pass in the IP.
21412         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21413
21414         This gives us a nice 2% speedup in mcs bootstrap.
21415
21416         * mini-x86.c (peephole_pass): Peephole pass to make
21417         mov  [foo], eax
21418         push [foo]
21419
21420         into
21421
21422         mov [foo], eax
21423         push eax
21424
21425         * mini.c (ip_in_bb): new method.
21426         (mono_method_to_ir): use this method rather than doing the hash
21427         lookup ourselves.
21428
21429         * linear-scan.c (mono_linear_scan): When expiring actives, you
21430         don't need to keep around variables that expire on this
21431         instruction. This makes it so that:
21432              a = b + 1
21433         will turn into:
21434              store (ebx add (ebx, 1))
21435         which will become
21436              add ebx, 1
21437
21438 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21439
21440         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21441         combination to avoid doing two copies. Fix up problems with previous
21442         patch.
21443
21444         * mini.c: Fix 64 bit warnings.
21445
21446         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21447
21448 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21449
21450         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21451         changes from the x86 code.
21452
21453         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21454
21455 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21456
21457         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21458         throwing code to reduce its size, unify the AOT and non-aot code and 
21459         get rid of relocations in the AOT case.
21460
21461         * mini-x86.h mini.c exceptions-x86.c 
21462         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21463         raise corlib exceptions which doesn't require relocations in the 
21464         caller.
21465
21466         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21467
21468 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21469
21470         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21471         needed.
21472
21473         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21474         in the AOT case.
21475
21476 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21477
21478         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21479         with add function when used from Inc/dec atomic 
21480         functions. Re-enabled optimization on x86.
21481         * mini-ops.h: renamed atomic_add functions to
21482         allow _add to match the Interlocked::Add and
21483         _add_next to match Interlocked::Inc/Dec.
21484
21485 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21486
21487         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21488         linking of BBs to the end BB, and enabled SSAPRE also with
21489         consprop and copyprop (which was prevented by that bug).
21490
21491 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21492
21493         * mini-x86.c: disabling the Interlocked optimizing code. 
21494
21495 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21496
21497         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21498         file version check.
21499         
21500 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21501
21502         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21503         interlocked optimization due lack of support on x86, rewrote 
21504         exchange to take into account that base may be in eax.
21505         
21506         xsp works again; activated Interlocked optimizing code.
21507         
21508 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21509
21510         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21511
21512 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21513
21514         * mini-ops.h: Add new opcodes.
21515
21516         * mini.h: Add new patch types. Add got_var to MonoCompile.
21517
21518         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21519         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21520         make it work with all kinds of patchable code.
21521
21522         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21523         address of the GOT, and referencing entries in the GOT.
21524
21525         * mini.c: Add code to load the GOT address if needed by an opcode.
21526
21527         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21528         independent AOT code on the x86 using an elf-style Global Offset Table.
21529
21530 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21531
21532         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21533
21534 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21535
21536         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21537         when running xsp.
21538
21539 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21540
21541         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21542         of Interlocked:Increment/Decrement/Add as inline ops.
21543         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21544
21545 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21546
21547         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21548         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21549
21550 2004-12-12  Duncan Mak  <duncan@ximian.com>
21551
21552         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21553         again. `patch_info->table_size' is no longer valid after Zoltan's
21554         commit #37636.
21555
21556 2004-12-12  Martin Baulig  <martin@ximian.com>
21557
21558         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21559         if we are the "real" method, ie. not an inlined method inside it.
21560
21561 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21562
21563         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21564         before we look in the special fields table. This fixes
21565         ../tests/thread-static-init.cs.
21566
21567 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21568
21569         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21570         for Array get_Rank and get_Length. Fixes bug #70465.
21571
21572 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21573
21574         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21575         separate structure to reduce the size of MonoJumpInfo.
21576
21577 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21578
21579         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21580
21581 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21582
21583         * mini.c (mini_get_inst_for_method): Changed to allow ports
21584         to return a MonoInst instead of opcode 
21585         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21586         
21587         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21588         Allow ports to return a created MonoInst instead of op-code, will enable
21589         new optimizations.
21590         (renamed mini_get_opcode_for_method to better reflected the functionality)
21591
21592 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21593
21594         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21595
21596 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21597
21598         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21599         Fixes #69985.
21600
21601 2004-12-08  Martin Baulig  <martin@ximian.com>
21602
21603         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21604         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21605
21606 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21607
21608         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21609         correctly.
21610
21611         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21612         arithmetic.
21613
21614 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21615
21616         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21617
21618 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21619
21620         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21621         bug introduced by the previous patch.
21622
21623 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21624
21625         * mini-ppc.c, objectc.cs: handle large structs passed by value
21626         (fixes bug #69972).
21627
21628 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21629
21630         * mini-ppc.c: OP_ARGLIST implementation from
21631         Geoff Norton  <gnorton@customerdna.com>.
21632
21633 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21634
21635         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21636         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21637
21638 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21639
21640         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21641
21642 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21643
21644         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21645         support.
21646
21647 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21648
21649         * mini-sparc.c: Zero out localled-ed memory.
21650
21651         * iltests.il: Add tests for zeroing out localloc-ed memory.
21652
21653 2004-12-04  Martin Baulig  <martin@ximian.com>
21654
21655         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21656         mono_method_get_signature_full().       
21657
21658 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21659
21660         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21661         and some utility functions (always for SSAPRE), integrated SSAPRE.
21662         * mini.h: Likewise.
21663         * driver.c: Added ssapre option.
21664         * ssa.c: Small fix on OP_ARG handling.
21665         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21666         * Makefile.am: Likewise.
21667
21668 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21669
21670         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21671         now in the xp code.
21672
21673         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21674         icall.
21675
21676 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21677
21678         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21679         
21680         * cpu-s390.md : Increase instruction length of oparglist.
21681
21682         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21683
21684 2004-11-30  Martin Baulig  <martin@ximian.com>
21685
21686         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21687         virtual generic methods.  We call a special helper_compile_generic_method()
21688         icall to retrieve the method from the vtable, inflate and compile
21689         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21690
21691         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21692
21693 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21694
21695         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21696
21697 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21698
21699         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21700         Fixes #69929.
21701
21702 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21703
21704         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21705         platforms with PIC aot.
21706
21707 2004-11-28  Martin Baulig  <martin@ximian.com>
21708
21709         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21710         Fixes gen-112.cs.
21711
21712 2004-11-28  Martin Baulig  <martin@ximian.com>
21713
21714         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21715         the result of mono_type_get_underlying_type() to check whether
21716         we're byref.
21717
21718 2004-11-26  Martin Baulig  <martin@ximian.com>
21719
21720         * mini.c
21721         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21722         in the g_assert().
21723
21724 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21725
21726         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21727         the same way as the other arguments so they won't get clobbered.
21728
21729         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21730         calls through R11 since it is clobbered by the trampoline code.
21731
21732 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21733
21734         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21735         pick up in-tree mscorlib.dll.
21736
21737 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21738
21739         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21740
21741         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21742         runtime data/code are now stored in a table similar to the GOT in ELF. 
21743         This allows the code itself to be position independent.
21744
21745         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21746         loading changes.
21747
21748         * aot.c: Attach ELF type (object/function) directives to all global
21749         symbols.
21750
21751         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21752
21753         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21754
21755         * mini-amd64.h: Turn on PIC AOT code.
21756
21757         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21758         returning the offset within an OP_AOTCONST instruction where the GOT
21759         offset needs to be added.
21760
21761         * mini.h: Bump AOT file format version.
21762
21763 2004-11-25  Martin Baulig  <martin@ximian.com>
21764
21765         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21766         uninflated generic methods.
21767
21768 2004-11-25  Martin Baulig  <martin@ximian.com>
21769
21770         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21771
21772 2004-11-24  Martin Baulig  <martin@ximian.com>
21773
21774         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21775         original klass (this only applies for generic instances).
21776
21777 2004-11-24  Martin Baulig  <martin@ximian.com>
21778
21779         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21780         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21781         that array).
21782
21783 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21784
21785         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21786         localloc. Fixes #69678.
21787
21788         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21789         
21790 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21791
21792         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21793         used SSE registers on pinvoke calls. Fixes #69774.
21794
21795 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21796
21797         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21798         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21799
21800 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21801
21802         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21803         Refer directly to the mcs/ tree.
21804
21805 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21806
21807         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21808         Check if a trampoline for a synchronized method is required. 
21809
21810 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21811
21812         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21813         with localloc if needed. Throe arithmetric exception in
21814         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21815         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21816
21817 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21818
21819         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21820         types before switching on type.  Fixes #69622.
21821
21822 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21823
21824         * Makefile.am (check-local): New.  Integrate into 'make check'.
21825         (MCS,RUNTIME): Define using in-tree mono and mcs.
21826         (ILASM): New.
21827         (%.exe): Use $(ILASM).
21828
21829 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21830
21831         * mini-ppc.c: adjust initial prolog size (bug #69691).
21832
21833 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21834
21835         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21836         #69664.
21837
21838 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21839
21840         * Makefile.am (clean-local): Rename from 'clean'.
21841
21842 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21843
21844         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21845         to mono_arch_is_int_overflow. 
21846         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21847         SIGFPE events.
21848
21849 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21850
21851         * declsec.c|h: New files to support declarative security attributes.
21852         Added function to check if a method has (applicable) security.
21853         * mini.c|h: Add check for declarative security attributes in
21854         mono_method_check_inlining.
21855         * Makefile.am: Added declsec.c and declsec.h to the build.
21856
21857 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21858
21859         * mini.c, mini.h: update to keep dynamic code info per-domain.
21860
21861 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21862
21863         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21864         (mini_init): Get rid of it from here too.
21865
21866 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21867
21868         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21869         implemented OP_RETHROW (patch by Geoff Norton
21870         <gnorton@customerdna.com>).
21871
21872 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21873
21874         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21875         between appdomains.  Fixes appdomain-unload on PPC.
21876
21877 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21878
21879         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21880         mini-exceptions.c: handle the new wrapper types.
21881         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21882         token value as a MonoClass* when compiling a wrapper.
21883         mono_jit_create_remoting_trampoline now takes an additional
21884         MonoRemotingTarget parameter.
21885         
21886 2004-11-10  Martin Baulig  <martin@localhost>
21887
21888         * mini.c (mono_method_to_ir): Use `generic_container->context'
21889         rather than creating a new one.
21890
21891 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21892
21893         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21894
21895         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21896
21897 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21898
21899         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21900         the experimental aot cache stuff.
21901
21902 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21903
21904         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21905         mini-exceptions.c: update to exception clause structure changes.
21906
21907 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21908
21909         * exceptions-x86.c (throw_exception): Fix warnings.
21910
21911         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21912         for OP_RETHROW.
21913
21914 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21915
21916         * exceptions-sparc.c (get_throw_exception): Really fix this.
21917
21918 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21919
21920         * tramp-*.c: we no longer support icalls without wrappers, so
21921         a bit of code can be removed here
21922
21923 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21924
21925         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21926         patch.
21927
21928         * cpu-sparc.md: Add op_rethrow.
21929
21930         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21931
21932         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21933
21934         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21935         * mini-ops.h: Add OP_RETHROW.
21936
21937         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21938
21939         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21940
21941 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21942         
21943         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21944         Makes the output much easier to read
21945
21946 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21947
21948         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21949         prevents another huge leak when compiling with ssa. Secondly, the
21950         performance of doing this rather than freeing the lists is much
21951         better. GList does a lock every time you allocate a list link,
21952         so that it can use a memory pool. So, it is better to just use
21953         a memory pool of our own.
21954         
21955         * ssa.c, linear-scan.c: replace g_list_remove_link with
21956         g_list_delete.  The remove one does not free the GList, so we were
21957         leaking memory. On -O=all --compile-all with corlib, this cut down
21958         3 MB of allocations.
21959
21960 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21961
21962         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21963
21964         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21965
21966         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21967         into a new function mono_create_jit_trampoline ().
21968
21969 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21970
21971         * trace.c (get_spec): Allow tracing of classes without a namespace.
21972
21973 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21974
21975         * mini.c: Fix pointer overwrite in mini_method_compile.
21976
21977 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21978
21979         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21980         The darwin ABI needs some special handling for 1 and 2 byte structs
21981         Lets use lbz/lhz instead of lwz everywhere.
21982         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21983         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21984         Use stb/sth for the former, and put the latter always on stack instead of in
21985         argument registers.
21986
21987 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21988
21989         * trace.c (is_filenamechar): Add '_'.
21990
21991 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21992
21993         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21994
21995         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21996
21997 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21998
21999         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
22000         depends on libmonogc. Fixes #68805.
22001
22002 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
22003
22004         * mini.c (mono_jit_free_method): Provide extra information for
22005         this error.  Currently this leaks, but will be turned into a
22006         developer option in the future.
22007
22008 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
22009
22010         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
22011
22012 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
22013
22014         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
22015         boundary. Fixes reading of PATCH_INFO_R4 and R8.
22016         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
22017
22018 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
22019
22020         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
22021         trampolines for AOT code.
22022
22023 2004-10-22    <vargaz@freemail.hu>
22024
22025         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
22026         constructed types. Fixes #68136.
22027
22028 2004-10-21  Martin Baulig  <martin@ximian.com>
22029
22030         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
22031         if it returns true, unwind the stack to the call instruction.
22032
22033 2004-10-21    <vargaz@freemail.hu>
22034
22035         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
22036
22037         * mini.h: Bump AOT version number.
22038
22039         * objects.cs: Add another test for unbox trampolines.
22040
22041         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
22042         valuetype methods.
22043
22044 2004-10-20    <vargaz@freemail.hu>
22045
22046         * driver.c: Add SHARED to the set of optimizations tested.
22047
22048         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
22049
22050         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
22051         used by CEE_NEWARR.
22052
22053         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
22054
22055 2004-10-20  Martin Baulig  <martin@ximian.com>
22056
22057         * mini-exceptions.c (mono_handle_exception): Call
22058         mono_debugger_handle_exception() to tell the debugger about
22059         catch/finally clauses.
22060
22061 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
22062
22063         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
22064
22065         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
22066         #68447.
22067
22068 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
22069
22070         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
22071         methods as their native size, fixed bug #57543, #57545.
22072         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
22073         This saves a temporary register and mullw call down into 1 (minor perf
22074         increase for cases like sum = sum * 5;  This use to translate into:
22075             li r11,5
22076             mullw r28,r28,r11
22077         It now translates to
22078             mulli r28,r28,5
22079
22080 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
22081
22082         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
22083         #68388.
22084
22085 2004-10-11  Martin Baulig  <martin@ximian.com>
22086
22087         * mini.c (mono_method_to_ir): If we're a generic method, get the
22088         MonoGenericContainer from our MonoMethodNormal and create a
22089         MonoGenericContext from it.
22090
22091 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
22092
22093         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
22094
22095         * basic-long.cs: Add test for checked i8->i2 cast.
22096
22097 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22098
22099         * inssel-ppc.brg: added a couple of speedup rules.
22100
22101 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
22102
22103         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
22104         to speed up rebuilds.
22105
22106 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22107
22108         * mini-s390.c: Minor fix to OP_OR_IMM.
22109
22110 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
22111
22112         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
22113         better. Fixes appdomain-unload.exe on sparc.
22114
22115 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
22116
22117         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
22118         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
22119         see bug 67324.
22120
22121 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
22122
22123         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
22124
22125 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
22126
22127         * mini.c: Always generate a field read/write wrapper for members
22128         of the class MarshalByRefObject since the actual instance could
22129         be a CBO.
22130
22131 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
22132
22133         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
22134
22135 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
22136
22137         * driver.c mini.h trace.c: Move the setting of the main assembly into
22138         a separate function called mono_trace_set_assembly () and call it after
22139         actually loading the main assembly. Fixes #66872.
22140
22141 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
22142
22143         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
22144         using the code manager.
22145
22146 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
22147
22148         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
22149
22150 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
22151
22152         * cpu-amd64.md: Fix bug in previous patch.
22153         
22154         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
22155         #66650.
22156
22157 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
22158
22159         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22160         mini-exceptions.c: updates for changed stack walk interface.
22161
22162 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22163
22164         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
22165
22166 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
22167
22168         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
22169
22170 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
22171
22172         * driver.c (mini_regression_list): Do not call mono_assembly_close 
22173         since assemblies can't be unloaded.
22174         
22175 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22176
22177         * cpu-amd64.md: Fix more instruction lengths.
22178
22179         * cpu-amd64.md: Fix lengths of some instructions.
22180
22181 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
22182
22183         * inssel.brg: Make the array ldelema check aot friendly.
22184
22185 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22186
22187         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
22188
22189         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
22190
22191 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
22192
22193         * mini-x86.c: Fix build.
22194
22195         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
22196         mono_type_get_underlying_type () helper function to simplify code.
22197         
22198 2004-09-09  Martin Baulig  <martin@ximian.com>
22199
22200         * mini-amd64.c: Don't access `type->data.klass' directly, call
22201         mono_class_from_mono_type() instead since the type may be a
22202         generic instance.
22203
22204 2004-09-09  Martin Baulig  <martin@ximian.com>
22205
22206         * mini-amd64.c (get_call_info): Fix support for generic instances.
22207         (add_valuetype): Use mono_class_from_mono_type() to get the class
22208         since we can be a generic instance.
22209
22210 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
22211
22212         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22213
22214 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22215
22216         * liveness.c: reset spill costs on each scan: bug 62107
22217
22218 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22219
22220         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22221         unnecessary line that doesn't compile
22222
22223 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22224
22225         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22226         trampolines, make them call an error function so people can fix their
22227         code.
22228
22229 2004-09-06  Martin Baulig  <martin@ximian.com>
22230
22231         * mini.c (mono_method_to_ir): When initializing locals, handle a
22232         generic instances like a valuetype if it's a valuetype and like a
22233         class if it's a class.
22234
22235 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22236
22237         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22238         stack. Fixes #64674.
22239
22240         * exceptions.cs: Add test for unwinding of call arguments.
22241
22242 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22243
22244         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22245         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22246         set the carry/borrow flag). The sparc and s390 implementations
22247         can now use optimized versions (and simplify the code). ppc bugfixes.
22248
22249 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22250
22251         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22252
22253 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22254
22255         * inssel-amd64.brg: Remove leftover 32 bit rule.
22256
22257         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22258
22259 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22260
22261         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22262         mono_arch_find_jit_info functions into a new function. Fix a memory
22263         leak.
22264
22265         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22266         refactored code.
22267         
22268 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22269
22270         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22271         as well.
22272         
22273         * exceptions.cs: Add array size tests.
22274
22275         * mini.c: Allocate a separate icall wrapper for each arity of 
22276         mono_array_new_va. Fixes #59509.
22277
22278         * exceptions.cs: Add testcase for 64578.
22279
22280         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22281
22282         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22283         
22284 2004-09-02  Martin Baulig  <martin@ximian.com>
22285
22286         * mini.c (mono_method_to_ir): When initializing the locals, call
22287         handle_initobj() on the generic instance itself, not its
22288         underlying type.
22289
22290 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22291
22292         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22293         MonoJitInfo for dynamic methods.
22294
22295         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22296
22297         * mini.c: Add support for freeing JIT data for dynamic methods.
22298         
22299 2004-09-01  Martin Baulig  <martin@ximian.com>
22300
22301         * mini-x86.c (is_regsize_var): Added support for generic
22302         instances.
22303         (mono_arch_emit_prolog): Make this compile again, use
22304         `x86_push_imm_template (code)'.
22305
22306 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22307
22308         * mini-x86.c: make all push_imm instructions that get
22309         patched always emit the long form
22310
22311 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22312
22313         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22314         in a per-domain hash.
22315
22316         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22317         types.
22318
22319 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22320
22321         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22322         work.
22323         
22324         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22325         work.
22326
22327         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22328         Beginnings of SSE2 support.
22329
22330         * exceptions.cs: Add more tests for checked int<->uint casts.
22331
22332 2004-08-28  Martin Baulig  <martin@ximian.com>
22333
22334         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22335         generic instances.
22336
22337         * mini.c
22338         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22339         Handle generic instances recursively.
22340
22341 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22342
22343         * iltests.il: test for conv.u8 on a constant
22344
22345 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22346
22347         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22348         LCONV_x4 (shrun_32 (membase)).
22349
22350 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22351
22352         * inssel-x86.brg: c&p rules for push/setret of long
22353
22354 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22355
22356         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22357         compare (regvar, base)
22358
22359         * inssel-x86.brg: more burg love
22360
22361         * inssel.brg: more cleanup
22362
22363         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22364
22365 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22366
22367         * basic-long.cs, basic-calls.cs: new tests for optimization.
22368
22369 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22370
22371         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22372         patch.
22373
22374 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22375
22376         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22377         
22378 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22379
22380         * inssel.brg (mini_emit_memcpy): use 
22381         NO_UNALIGNED_ACCESS to disable memcpy optimization
22382
22383 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22384
22385         * mini-amd64.c: Handle generic types in various places.
22386
22387         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22388
22389 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22390
22391         * mini.c (handle_box): Fix warning.
22392
22393         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22394
22395         * mini-amd64.h: Enable the emit_state optimization.
22396
22397         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22398
22399         * mini-amd64.c: Add some new 64 bit peephole opts.
22400
22401         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22402
22403         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22404
22405         * mini-amd64.c: Register allocator fixes.
22406
22407         * mini.c: Add an optimization to emit_state to avoid allocation of new
22408         registers on some platforms.
22409
22410 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22411
22412         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22413
22414         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22415         allocation. Fixes #63085.
22416
22417         * basic-long.cs: Add new regression test.
22418
22419         * mini-amd64.c: Register allocator improvements.
22420
22421 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22422
22423         * mini-amd64.c (read_tls_offset_from_method): Add another code
22424         sequence.
22425
22426         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22427         instruction sequence for nullifying class init trampolines.
22428
22429         * objects.cs: Add new regalloc test.
22430
22431         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22432
22433 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22434
22435         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22436         
22437         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22438         arguments.
22439
22440         * driver.c: Fix profiling after TLS changes.
22441         
22442         * driver.c (mono_main): Set mono_stats.enabled if needed.
22443
22444         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22445         CEE_BOX.
22446
22447 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22448
22449         * mini-x86.c: use a 1 op rather than a 2 op tls access
22450         instruction -> faster.
22451
22452 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22453
22454         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22455         x86 backend.
22456
22457 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22458
22459         * exceptions-sparc.c (throw_exception): fix typo
22460
22461 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22462
22463         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22464         set tree->dreg correctly with tls. Allow any
22465         register to be used.
22466
22467         * mini-x86.c (read_tls_offset_from_method): add new code
22468         generation pattern seen with GCC.
22469
22470
22471 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22472
22473         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22474         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22475         exceptions-sparc.c: fix some performance issues in exception
22476         handling and setting of the stack trace for exceptions that were
22477         already thrown.
22478
22479 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22480
22481         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22482         x86 backend.
22483         
22484         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22485         registers.
22486
22487 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22488
22489         This patch inlines tls access, when possible.
22490         
22491         * mini.h: new arch functions for TLS intrinsics.
22492         All platforms updated with a stub.
22493
22494         * mini.c: use the new intrinsics
22495
22496         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22497         arch specific intrinsic for tls variables
22498
22499 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22500
22501         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22502         under windows.
22503
22504 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22505
22506         * mini.c: thread local allocation
22507
22508 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22509
22510         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22511
22512         * Makefile.am: Link against the static version of libmonogc.
22513         
22514         * Makefile.am: Link the static versions of the convenience libraries
22515         into the mono executable.
22516
22517         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22518
22519 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22520
22521         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22522         on integer overflow.
22523
22524         * mini-amd64.c: Reorganize function call code.
22525
22526         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22527
22528 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22529
22530         * inssel-x86.brg: use xor eax,eax.
22531         
22532         * basic.cs: new tests
22533
22534 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22535
22536         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22537         in exception throwing code.
22538         
22539 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22540
22541         * inssel-x86.brg: use xor esi,esi.
22542
22543 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22544
22545         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22546         can trace methods compiled during mini_init () too.
22547
22548         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22549         CEE_CONV_U4.
22550
22551 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22552
22553         * Makefile.am: static link on x86 (r=zoltan)
22554
22555 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22556
22557         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22558         code since it causes some programs to fail.
22559
22560 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22561
22562         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22563
22564 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22565
22566         * mini.c: ovfops_op_map - add STACK_OBJ case for
22567         CONV_I 
22568         * basic.cs: add test_0_pin_string as test
22569         case for above.
22570
22571 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22572
22573         * Makefile.am: build C# if srcdir != builddir
22574
22575 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22576
22577         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22578         fall-through blocks.
22579
22580 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22581
22582         * driver.c: enable loop by default again and include abcrem in -O=all.
22583
22584 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22585
22586         * iltests.il: Add some localloc tests.
22587
22588         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22589
22590         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22591         Fixes #62574.
22592
22593         * inssel-amd64.brg: Add some optimizations.
22594
22595         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22596         for gcc-3.4.
22597
22598         * Makefile.am: Statically link mono against libmono on AMD64.
22599         
22600         * mini-amd64.c inssel-amd64.brg: Optimizations.
22601
22602 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22603
22604         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22605
22606         * tramp-amd64.c: Patch calling code in trampolines.
22607
22608 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22609
22610         * mini-amd64.c: pinvoke struct passing fixes.
22611
22612 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22613
22614         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22615         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22616
22617 2004-08-05  Duncan Mak  <duncan@ximian.com>
22618
22619         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22620         CEE_LDELEM_ANY.
22621
22622 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22623
22624         * mini-amd64.c (emit_move_return_value): Move return value for normal
22625         calls too.
22626
22627 2004-08-05  Martin Baulig  <martin@ximian.com>
22628
22629         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22630         `type->type'; just modify `type' itself when dealing with enums
22631         and generic instances.
22632         (check_call_signature): Make `simple_type' a `MonoType *'.
22633
22634 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22635
22636         * mini.c: Use OP_PADD to add offsets to addresses.
22637
22638         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22639
22640 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22641
22642         * mini-sparc.c (mono_arch_emit_epilog): fix check
22643         for folding last op into restore instruction
22644
22645 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22646
22647         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22648         helper methods using the code manager.
22649         
22650         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22651
22652         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22653
22654 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22655         
22656         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22657           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22658
22659         * mini-s390.c: fix tail processing
22660
22661 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22662
22663         * mini-ppc.c: mul.ovf.un exception name fix.
22664
22665 2004-08-03  Martin Baulig  <martin@ximian.com>
22666
22667         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22668         instances; before jumping to `handle_enum', also modify `ptype'.
22669
22670 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22671
22672         * cpu-sparc.md: fcall maximal length too small.
22673
22674 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22675
22676         * mini-amd64.c mini.h: Add initial support for passing/returning 
22677         structures to/from pinvoked methods.
22678
22679 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22680
22681         * mini-ppc.c: reg allocator fix.
22682
22683 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22684
22685         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22686
22687         * inssel.brg: Optimize memset on 64 bit machines.
22688
22689         * mini-amd64.c: Fix some vararg cases.
22690
22691 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22692
22693         * mini-s390.c: Corrected macro in emit_float_to_int
22694
22695         * s390-abi.cs: Tests to exercise the s390 ABI
22696
22697 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22698
22699         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22700         caller saved regs.
22701
22702         * basic.cs: Add a test for add.ovf.un.
22703
22704 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22705
22706         * mini-sparc.c: add case for OP_IDIV_UN
22707
22708 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22709
22710         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22711         
22712         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22713
22714 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22715
22716         * basic.cs: regression tests.
22717
22718         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22719         regressions.
22720
22721 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22722
22723         * basic.cs: Add a new test.
22724
22725         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22726         and AOT. Various fixes and optimizations.
22727
22728         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22729
22730 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22731
22732         * mini-ppc.c: make sure temp regs are not used for global reg
22733         allocation.
22734
22735 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22736
22737         * cpu-sparc.md: conv_i8 fix for 64bits
22738
22739         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22740
22741 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22742         
22743         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22744         add opcode for cmp BYTE PTR [eax], imm.
22745
22746         * inssel.brg: Make memcpy and memset takes bases.
22747
22748 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22749
22750         * *-amd64.*: More AMD64 work.
22751         
22752 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22753
22754         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22755         add a compare-not-equal opcode.
22756         
22757 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22758
22759         * mini.c: Use mono_init_from_assembly instead of mono_init.
22760         
22761 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22762
22763         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22764
22765         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22766
22767         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22768
22769         * inssel.brg: 64 bit fixes.
22770
22771         * mini.h (MonoCallInst): Add some AMD64 specific data.
22772
22773         * mini.h: Add some OP_P opcodes.
22774
22775 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22776
22777         * basic.cs: tests for 61797 and 61740
22778
22779 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22780
22781         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22782         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22783
22784 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22785
22786         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22787
22788         * *-amd64*.*: Ongoing AMD64 work.
22789
22790 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22791
22792         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22793
22794         * *-amd64*: Ongoing AMD64 work.
22795
22796         * mini-arch.h: Add AMD64 support.
22797
22798         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22799
22800         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22801
22802         * mini-ops.h: Add new opcodes.
22803
22804         * Makefile.am: Add AMD64 support.
22805
22806         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22807         rules into the inssel-long*.brg files.
22808
22809         * *-amd64.*: Add beginnings of AMD64 backend.
22810
22811 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22812
22813         * mini.c (print_dfn): commenting out the code that prints
22814         the cil. With -O=deadce, this makes -v -v crash.
22815         
22816         * cpu-pentium.md: make checkthis have a length of 2
22817
22818 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22819
22820         * mini-sparc.h: fix implementations of __builtin
22821         functions for Sun compiler for V9.
22822
22823 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22824
22825         * mini.c: use the new stelem.ref wrapper
22826         * exceptions.cs, arrays.cs: new stelem.ref tests
22827
22828 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22829
22830         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22831         new XSP should work with these changes).
22832
22833 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22834         
22835         * inssel-{long32,x86,}.brg: trivial optimizations.
22836         
22837 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22838
22839         * mini.c: load value when emitting box operation in
22840         constrained calls.
22841
22842 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22843
22844         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22845         is one byte shorter than cmp DWORD PTR [eax], 0.
22846
22847 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22848
22849         * inssel-ppc.brg: arguments on the stack are always
22850         relative to the stack pointer (spotted by Neale Ferguson).
22851
22852 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22853
22854         * exceptions-x86.c: delay appending the method name to the trace until
22855         after mono_jit_info_table_find is called, as this gets the real
22856         MonoMethod.
22857
22858 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22859
22860         * aot.c: register roots
22861
22862 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22863
22864         * aot.c : I could just use PLATFORM_WIN32 flag.
22865
22866 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22867
22868         * aot.c : Reverting the previous fix. This time it broke linux build.
22869
22870 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22871
22872         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22873
22874 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22875
22876         * mini.c (handle_stack_args): Remove some more debugging code.
22877         
22878         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22879
22880         * driver.c mini.h aot.c: Allow additional options to be specified with
22881         --aot and pass them to mono_compile_assembly.
22882
22883         * aot.c: Add experimental code to AOT compile all loaded assemblies
22884         on demand and save the code into a cache in the filesystem.
22885
22886         * aot.c: Add support for more wrapper methods.
22887         
22888         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22889         58863.
22890
22891         * cpu-*.md: Remove removed opcodes.
22892
22893         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22894         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22895         related icalls to marshal.c.
22896
22897 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22898
22899         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22900
22901         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22902
22903         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22904
22905 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22906         * liveness.c: If liveness is recomputated we need to reset the information
22907         for each variable. This way, if the liveness range has been narrowed
22908         by optimizations that happened after the last computation, we can return
22909         a smaller range.
22910         
22911         For example, if you have
22912         
22913         {
22914                 int i = 0;
22915                 
22916                 // Tons of code that does not affect i
22917                 
22918                 i = foo ();
22919                 ...
22920         }
22921         
22922         i = 0 is dead code and will be removed by SSA. However, when
22923         linear scan gets to the code, i will still appear to be live
22924         throughout the entire block. This prevents good register allocation.
22925
22926 2004-07-06  Martin Baulig  <martin@ximian.com>
22927
22928         * debug-mini.c (mono_debug_init_method): Allow
22929         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22930         (mono_debug_add_icall_wrapper): New method.
22931
22932         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22933
22934 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22935
22936         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22937         optimization.
22938
22939 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22940
22941         * aot.c (mono_aot_load_method): Fix loading of debug info.
22942
22943 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22944
22945         * aot.c: Add logging support.
22946
22947 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22948
22949         * mini.h: Add prototype for mono_print_method_from_ip.
22950
22951         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22952
22953         * inssel.brg: 64 bit fixes.
22954
22955         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22956         inssel-long32.brg.
22957
22958         * Makefile.am: Add SPARC64 support.
22959
22960 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22961
22962         * aot.c: Fix alignment problems on 32 bit platforms.
22963
22964 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22965
22966         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22967         SPARC64.
22968
22969         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22970         problems.
22971
22972         * mini.h: Bump AOT file version. Some 64 bit fixes.
22973
22974 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22975
22976         * inssel-sparc.brg: Add new rule to avoid register moves.
22977
22978         * inssel.brg: Add ldind_to_load_membase helper function.
22979
22980 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22981
22982         * mini.c: OffsetToStringData intrinsic.
22983         
22984 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22985
22986         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22987
22988         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22989         regression tests.
22990
22991         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22992 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22993
22994         * mini.c: reinstated mono_compile_get_interface_var()
22995         on x86, too, since the change breaks the Gtk# build there as well.
22996
22997 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22998
22999         * driver.c: remove loop from the default optimizations: it seems to
23000         interact badly with some of the other options (see bug #60613).
23001
23002 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
23003
23004         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
23005         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
23006
23007 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
23008
23009         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
23010         vararg-using methods.
23011
23012 2004-06-21  Martin Baulig  <martin@ximian.com>
23013
23014         * mini/mini-exceptions.c
23015         (mono_handle_exception): Added `gpointer original_ip' argument.
23016         After calling mono_unhandled_exception(), call
23017         mono_debugger_unhandled_exception() and if that returns true,
23018         restore the context and return.
23019
23020 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
23021
23022         * mini-ppc.c: prefer the use of relative branches so
23023         they won't need to be patched in aot code (patch from Patrick Beard).
23024
23025 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23026
23027         * aot.c: patch from Patrick Beard to make the output assembly
23028         more correct for the MacOSX assembler. Small tweak to
23029         generate sane images on Linux/PPC, too.
23030
23031 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23032
23033         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
23034         case until bug #59509 is fixed (shows up in #60332).
23035
23036 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23037
23038         * mini.c: make sure the needed wrappers are compiled, too, with
23039         precomp.
23040
23041 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
23042
23043         * driver.c: remove NPTL reference in --version output.
23044
23045 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23046
23047         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
23048         generate valid assembly for the Mach-O assembler.
23049
23050 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23051
23052         * driver.c: don't include abcrem in the all optimization specifier
23053         since it slows down jit compilation too much for now.
23054
23055 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
23056
23057         * mini.c: use BIGMUL only if both operands have the same signage.
23058         * iltests.il: Test for bug 60056. (errors related to signage in
23059         BIGMUL).
23060
23061         r=lupus.
23062
23063 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
23064
23065         * mini.c, aot.c: memory leak fixes.
23066
23067 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23068
23069         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
23070
23071 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
23072
23073         * Makefile.am: remove the -static hack completely, it links in
23074         statically glib as well.
23075
23076 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
23077
23078         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
23079         * exceptions.cs: make it compile with new mcs/csc.
23080
23081 2004-06-03 Massimiliano Mantione <massi@ximian.com>
23082         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
23083         and added relevant test case.
23084
23085 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23086
23087         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
23088         regressions in gtk-sharp.
23089
23090 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
23091
23092         * exceptions.cs: New regression tests.
23093
23094         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
23095
23096 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
23097
23098         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
23099
23100 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
23101
23102         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
23103
23104         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
23105
23106 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
23107
23108         * mini.c (mono_jit_runtime_invoke): Init class in this
23109         method instead of trusting mono_jit_compile_method to
23110         do the work (because wrappers can be in object class)
23111
23112 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
23113
23114         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
23115
23116         * basic-long.cs: New regression test.
23117
23118 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
23119
23120         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
23121         and div/rem checks.
23122
23123 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
23124
23125         * Makefile.am: fix miguel's change to build mono statically against
23126         libmono (track build dependencies).
23127
23128 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23129
23130         * cfold.c: Some glib versions do not have G_MININT32.
23131
23132 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
23133
23134         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
23135         with precision of tan, atan, sin and cos, and implemented related
23136         regressions tests (fixes bug 54467, but one new problem appeared and
23137         is not fixed yet).
23138
23139 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23140
23141         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
23142
23143         * exceptions.cs: Add test for constant folding && division by zero.
23144
23145         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
23146         since driver.c is in libmono too, so the optimization was useless.
23147
23148         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
23149         variable to driver.c so the compiler can emit more efficient code to
23150         access them.
23151
23152 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23153
23154         * Makefile.am: don't distribute generated inssel.[ch] files.
23155
23156 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
23157
23158         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
23159         into the default appdomain. Fixes #58707.
23160
23161         * jit-icalls.c: Remove the broken approximation for truncl, doing
23162         no conversion is better.
23163
23164         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
23165         Fixes #58863.
23166
23167 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23168
23169         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
23170         of the mcrxr instruction which is not available on some processors
23171         even if it's documented to be. Implement add and sub overflow correctly
23172         (still not complete for long unsigned). Speed up icalls a bit.
23173
23174 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
23175
23176         * mini.c (mono_jit_compile_method_with_opt): Make sure that
23177         we run .cctor in the current domain instead of target_domain.
23178         
23179         Fixes bug #58558, .cctor not being called in -O=shared.
23180
23181 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23182
23183         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
23184
23185 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
23186
23187         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
23188         which can be done with an imm8, do it that way.
23189         (mono_arch_output_basic_block): ditto for a jmp
23190         (mono_arch_emit_prolog): Computate maximum offset of a label.
23191
23192 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
23193
23194         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
23195         now tries to allocate prefered physical reg's for virtual
23196         regs. This reduces the number of emited spills/loads with
23197         20-30% on our core assemblies.
23198
23199 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23200
23201         * jit-icalls.c: truncl() is not needed and trunc() is
23202         the correct thing to do anyway (bug #58287).
23203
23204 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
23205
23206         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
23207         if available.
23208
23209 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23210
23211         * driver.c: enable loop optimizations by default.
23212
23213 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23214
23215         * mini-x86.c: fix calc of max loop size when aligning loops start.
23216
23217 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23218
23219         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23220         the stack.
23221
23222 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23223
23224         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23225         should set carry.
23226
23227         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23228
23229         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23230         
23231         * mini.c (inline_method): Allways inline some wrappers even if the cost
23232         is too large. Fixes #58785.
23233
23234         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23235         
23236 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23237
23238         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23239         (crichton@gimp.org). Beginning of support for sparc/linux.
23240
23241         * mini-sparc.c: Optimize retrieval of LMF address.
23242
23243 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23244
23245         * exceptions-ppc.c:  handle alloca in methods with clauses.
23246
23247 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23248
23249         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23250
23251 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23252
23253         * mini.c: Delegate most of the abort signal work to 
23254           mono_thread_request_interruption, which also handles Stop and Suspend
23255           states.
23256
23257 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23258
23259         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23260         supports the save/restore lmf opcodes.
23261
23262 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23263
23264         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23265         by gcc-3.4 as well.
23266
23267         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23268
23269 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23270
23271         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23272         methods which contain array accesses.
23273
23274         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23275         boundaries. Fixes #58537.
23276
23277         * iltests.il: Add regression test for #58537.
23278
23279 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23280
23281         * mini-x86.c (mono_arch_local_regalloc): Last part of
23282         fix for bug #58633 (releasing register to early).
23283
23284 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23285
23286         * basic-long.cs: Add new regression test.
23287
23288 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23289
23290         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23291         register too early on the chain.
23292
23293 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23294
23295         * mini.c (create_helper_signature): Use a helper function to reduce
23296         the code which needs to be written. Also set the calling convention of
23297         icalls on windows. Fixes #57840.
23298
23299 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23300
23301         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23302         exceptions-ppc.c: added helper function to get the instruction address
23303         from a signal handler context.
23304
23305 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23306
23307         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23308         from gonzalo.
23309
23310 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23311
23312         * helpers.c: Add new env variable to pass args to objdump.
23313         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23314
23315 2004-05-17  Radek Doulik  <rodo@ximian.com>
23316
23317         * Makefile.am (common_sources): added abcremoval.h so it get
23318         disted and daily mono packages on go-mono.com will build again
23319
23320 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23321
23322         * abcremoval.c: Fixed coding style, added copyright header.
23323
23324         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23325
23326         * mini.h: Added prototype for abc removal main function.
23327
23328         * build_relations_propagation_table.pl: Added copyright header.
23329
23330 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23331
23332         * basic-long.cs: reg test for complex ceq_long bug.
23333
23334 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23335
23336         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23337         reg in long and clob case (bug #58343). Fixed/added comments.
23338
23339 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23340
23341         * mini.c (mono_jit_runtime_invoke): Follow new convention
23342         of calling the invoke method with an function pointer.
23343
23344 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23345
23346         * ChangeLog: Fix author of memory leak patch.
23347
23348 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23349
23350         * Makefile.am: fix make dist as well...
23351
23352
23353 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23354
23355         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23356         on archs where pointers are 4 bytes long.
23357
23358         * Makefile.am: Added abcremoval.c source file.
23359
23360         * abcremoval.c: Added abcremoval.c.
23361
23362         * abcremoval.h: Added abcremoval.h.
23363
23364         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23365
23366         * inssel.brg: Enabled bounds check removal.
23367
23368         * mini.c: Added support for abcrem optimization.
23369
23370         * mini.h: Added abcrem optimization label.
23371
23372         * driver.c: Added support for abcrem optimization.
23373
23374         * propagated_relations_table.def: Added propagated_relations_table.def.
23375
23376 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23377
23378         * mini.c, cfold.c: fix style.
23379
23380 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23381
23382         * mini.c: handle issue with the low-level implementation of
23383         some long opcodes (bug #54209).
23384
23385 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23386
23387         * basic.cs: test for my new cmov stuff.
23388
23389 2004-05-13      Patrik Torstensson
23390
23391         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23392         opt and added peephole documentation.
23393
23394 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23395
23396         * tramp-ppc.c: rewrote the generic trampoline code.
23397
23398 2004-05-11      Patrik Torstensson
23399
23400         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23401
23402 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23403
23404         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23405
23406         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23407         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23408
23409         * mini.c: Add new icalls for AsAny marshalling.
23410
23411 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23412
23413         * tramp-ppc.c, mini-ppc.c: more cleanups.
23414
23415 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23416
23417         * mini.c: no warnings.
23418
23419 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23420
23421         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23422
23423 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23424
23425         * mini.c: In the thread abort signal handler, if the thread is in the
23426         process of being stoped, don't throw the Abort exception, just stop the
23427         thread.
23428
23429 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23430
23431         * tramp-ppc.c: removed old code.
23432
23433 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23434
23435         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23436         do some simple speed optimizations on ppc.
23437
23438 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23439
23440         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23441         and large offsets in load/store.
23442
23443 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23444
23445         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23446         it causes regressions.
23447
23448 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23449
23450         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23451         support.
23452
23453 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23454
23455         * jit-icalls.c: remove warnings.
23456         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23457         speedups for unsafe code.
23458
23459 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23460
23461         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23462
23463 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23464
23465         * basic-calls.cs: Add new regression test.
23466
23467         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23468         more portable.
23469
23470         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23471
23472         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23473         is no longer used.
23474
23475 2004-05-06      Patrik Torstensson
23476
23477         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23478         long reg allocation in any reg (not only eax:edx) and implemented 
23479         long shl/shr ops in asm instead of helpers.
23480
23481 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23482
23483         * mini-sparc.h: Fix warnings.
23484
23485         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23486         stack.
23487
23488         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23489         separate statement for clarity.
23490
23491         * mini-sparc.c: Update status.
23492
23493 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23494
23495         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23496         here.
23497
23498 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23499
23500         * inssel-ppc.brg: another small pre-release workaround:
23501         we don't do overflow detection for long_sub_un.
23502
23503 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23504
23505         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23506         (also works around a weird ppc bug: 57957).
23507
23508 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23509
23510         * tramp-ppc.c: trampoline fixes.
23511
23512 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23513
23514         * mini-ppc.c: fixed typos.
23515
23516 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23517
23518         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23519         at the top of the stack. Fixed typos. Use a frame registers
23520         for all the methods with exception clauses.
23521
23522 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23523
23524         * exceptions-ppc.c: restore fp registers.
23525
23526 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23527
23528         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23529         order from the stack top (moved the stack room to save the
23530         return value for trace after the param area). Fixed corruption
23531         in restoring registers on unwind.
23532
23533 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23534
23535         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23536
23537 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23538
23539         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23540         and prolog/epilog for methods that use it. Allow
23541         enough param area room for varargs methods. Fix miguel's
23542         breakage in exception handling.
23543
23544 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23545
23546         * Makefile.am: run genmdesc only on current arch.
23547
23548 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23549
23550         * exceptions-x86.c:
23551         * mini-x86.h: fix the build on windows.
23552
23553 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23554
23555         * 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.
23556
23557         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23558
23559         * mini-exceptions.c: New file.
23560         
23561         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23562         Move some parts of the x86 exception handling code to an 
23563         arch-independent file so it can be shared with other ports.
23564
23565 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23566
23567         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23568
23569 2004-04-26  David Waite  <mass@akuma.org>
23570
23571         * driver.c: remove comma from end of enumeration declaration
23572
23573 2004-04-26  Jackson Harper  <jackson@ximian.com>
23574
23575         * driver.c: parse config file before loading first assembly. This
23576         allows the user gac to be enabled/disabled. 
23577         
23578 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23579
23580         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23581         simpler mechanism: we do not care what is encoded initially
23582         (branch absolute or relative), we care about the code and its
23583         target.  I kept the old code for reference for now.
23584
23585         The new code tries first to determine if the jump is anywhere in
23586         the -/+32 absolute meg range, if it succeeds, it encodes using the
23587         absolute branch;  If not, it tried to find something in the
23588         relative range, if not, it uses the handle_thunk code. 
23589
23590 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23591
23592         * exceptions-ppc.c: use the correct ip register on macosx.
23593
23594 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23595
23596         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23597
23598 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23599
23600         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23601         Raise exception on integer divide by zero by hand since the hw
23602         doesn't support it. Handle NaNs in FP compares.
23603
23604 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23605
23606         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23607         code reducing duplication between the platforms and enabled
23608         signal exception handling (on linux for now).
23609
23610 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23611
23612         * exceptions-ppc.c: more macosx support.
23613
23614 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23615
23616         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23617
23618 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23619
23620         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23621
23622 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23623
23624         * iltests.il: more tests.
23625
23626 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23627
23628         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23629         vars as well.
23630
23631 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23632
23633         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23634
23635 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23636
23637         * liveness.c: Mark variables as volatile in all basic blocks reachable
23638         from exception clauses.
23639
23640 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23641
23642         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23643         inlining.
23644
23645 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23646
23647         * iltests.il, basic.cs: more tests for regalloc.
23648
23649 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23650
23651         * iltests.il: Some tests for register allocation modifications
23652         I have locally.
23653
23654 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23655
23656         * exceptions.cs: Add regression test for bug #56782.
23657
23658         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23659         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23660         the beauty of fixing the same thing in 5 different files...
23661
23662 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23663
23664         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23665         methods.
23666
23667 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23668
23669         * mini.c: Add support for STRWLPARRAY marshalling convention.
23670
23671 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23672
23673         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23674         to init the context to setup the regs pointer).
23675
23676 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23677
23678         * exceptions-ppc.c: more exceptions work.
23679
23680 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23681
23682         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23683         not allowed.
23684
23685 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23686
23687         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23688         can use the memory directly.
23689
23690         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23691
23692         add x86_add_membase, x86_sub_membase, x86_mul_membase
23693
23694 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23695
23696         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23697         GENERAL_REGS they were also hardcoded for all PPC ports.
23698
23699         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23700
23701         Remove hard-coded limit for floating point registers, use
23702         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23703
23704         Notice that in MacOS X calling conventions you can fit a lot more
23705         floating point values in registers, so I should update the PInvoke
23706         test to excercise the passing of floating point values on the
23707         stack (currently broken).
23708         
23709 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23710
23711         * tramp-ppc.c (create_trampoline_code): Added
23712         JUMP_TRAMPOLINE_SIZE. 
23713         (ppc_magic_trampoline): Follow the pattern from
23714         x86_magic_trampoline: if code is set to zero, return. 
23715         (create_trampoline_code): Always pass MonoMethod to the jump
23716         trampoline, before it was passing a null.
23717         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23718         share the code with mono_arch_create_jit_trampoline. 
23719
23720         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23721         implemented.
23722         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23723         implemented.  
23724
23725         * cpu-g4.md: Added length for jmp instruction, the worst case
23726         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23727         for save_lmf).
23728
23729 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23730
23731         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23732
23733 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23734
23735         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23736         before each IL instruction.
23737
23738         * mini.c (CEE_BOX): Fix warnings.
23739
23740 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23741
23742         * mini.c: removed a few unused vars and extra whitespace.
23743
23744 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23745
23746         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23747         checks.
23748         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23749         index.
23750         (OP_GETCHR): use the above
23751         (CEE_LDELEMA): use the above.
23752
23753         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23754         version of the generic impl.
23755         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23756         (CEE_LDELEMA): use the above.
23757
23758 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23759
23760         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23761         Fixes #56317.
23762
23763         * iltests.il: Added new regression test for #56317.
23764
23765 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23766
23767         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23768         under NetBSD. Fixes #56450.
23769
23770         * liveness.c (update_gen_kill_set): Fix previous patch.
23771
23772 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23773
23774         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23775
23776 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23777
23778         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23779         ldsfld and ldsflda.
23780
23781         * inssel-sparc.brg: Add more optimizations.
23782
23783         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23784
23785 2004-04-01  Martin Baulig  <martin@ximian.com>
23786
23787         * mini.c (handle_box): New static function; moved the
23788         implementation of CEE_BOX here.
23789         (mono_method_to_ir): Added `constrained_call' variable.
23790         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23791         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23792         mono_method_get_constrained() to get the method.
23793
23794 2004-04-01  Martin Baulig  <martin@ximian.com>
23795
23796         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23797         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23798         (mono_method_to_ir): We don't need these macros anymore since
23799         mono_class_get_full() already takes care of it. 
23800
23801 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23802
23803         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23804         use @function (as doesn't accept #function here) and check the return
23805         value of system and stop if fails.
23806
23807 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23808
23809         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23810
23811 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23812
23813         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23814
23815         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23816
23817         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23818         #56223.
23819
23820         * basic-long.cs: Add test for negation of Int64.MinValue.
23821
23822 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23823
23824         * mini-sparc.c: Update status.
23825
23826         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23827
23828         * exceptions-sparc.c: Fix return value in filters.
23829
23830         * inssel-sparc.brg: Fix register allocation in some rules.
23831
23832 2004-03-28  Martin Baulig  <martin@ximian.com>
23833
23834         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23835         if neccessary.  
23836
23837 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23838
23839         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23840         
23841         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23842         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23843         remove unused conv_u4 opcode.
23844
23845         * mini-x86.c: Remove valgrind workaround since it slows down things
23846         even when mono is not run under valgrind.
23847
23848 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23849
23850         * mini-sparc.c: Update status.
23851
23852         * inssel-sparc.brg: Add some optimizations.
23853
23854         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23855         future delay slot filling. Add support for varargs, tail calls and JMP.
23856
23857         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23858         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23859
23860         * inssel.brg: Fix register allocation in OP_ARGLIST.
23861
23862         * inssel.brg: Fix warnings.
23863
23864 2004-03-25  Martin Baulig  <martin@ximian.com>
23865
23866         * mini.c (inflate_generic_field): Removed.
23867         (mini_get_method): Removed, use mono_get_method_full(),
23868         (mini_get_class): Removed, use mono_class_get_full().
23869         (mono_method_to_ir): Pass our generic context to
23870         mono_field_from_token().        
23871
23872 2004-03-25  Martin Baulig  <martin@ximian.com>
23873
23874         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23875         of a `MonoMethod *'.
23876         (mini_get_method): Take a `MonoGenericContext *' instead
23877         of a `MonoMethod *'.
23878         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23879         a new local variable called `generic_context' which holds the
23880         current `MonoGenericContext *'; use it to lookup things.
23881
23882 2004-03-24  Martin Baulig  <martin@ximian.com>
23883
23884         * mini.c (mini_get_class): New static method; if we're inside a
23885         generic instance, inflate the class if neccessary.
23886         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23887
23888 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23889
23890         * iltests.il: New regression test for #55976.
23891
23892         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23893         #55976.
23894
23895 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23896
23897         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23898         output.
23899
23900 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23901
23902         * liveness.c: Consider SSA stores as well as loads when making vars
23903         volatile.
23904
23905         * exceptions.cs: New regression tests for register allocation.
23906         
23907 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23908
23909         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23910         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23911           domain lock only to protect puntual access to data structures.
23912           Added access lock for sighash, jit_icall_hash_name, 
23913           jit_icall_hash_addr and domain->code_mp.
23914
23915 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23916
23917         * driver.c: Print SIGSEGV handling method.
23918
23919         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23920
23921         * mini.c (setup_jit_tls_data): Handle case when this is called
23922         multiple times for a thread.
23923
23924         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23925         is different from fbxx_un. Fixes #54303. Also use constants instead of
23926         magic numbers in a lot of places.
23927
23928 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23929
23930         * exceptions.cs: Fix cctor test when --regression is used.
23931
23932 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23933
23934         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23935         for Linux/ppc.
23936
23937 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23938
23939         * inssel-ppc.brg: fixed register assignments for some rules.
23940
23941 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23942
23943         * exceptions.cs: Add test for exceptions in static constructors.
23944
23945         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23946         static constructors outside the domain lock. Fixes #55720.
23947
23948 2004-03-17  Martin Baulig  <martin@ximian.com>
23949
23950         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23951         (inflate_generic_field): Take the `MonoMethod *' instead of the
23952         `MonoClass *' and added support for generic method.
23953         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23954         have a `field->parent->gen_params', only inflate the field if it's
23955         an open constructed type.
23956
23957 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23958
23959         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23960         exception object instead of the preconstructed ones.
23961
23962 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23963
23964         * mini.c: reverted changed to sigsegv_signal_handler commited
23965         accidentally in the previous patch.
23966
23967 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23968
23969         * mini.c:
23970         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23971         running --aot with an old assembly.
23972
23973 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23974
23975         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23976         point values.
23977
23978         * mini-sparc.c: Add support for v9 branches with prediction.
23979
23980 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23981
23982         * mini.c (mini_init): #warning is GNUC only
23983
23984         * mini-sparc.h: implement __builtin_frame_address
23985         and __builtin_return_address for Sun C compiler
23986
23987 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23988
23989         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23990
23991 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23992
23993         * basic-calls.cs: Add test for unaligned byref long argument passing.
23994
23995         * mini-ops.h: Add sparcv9 compare and branch instructions.
23996
23997         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23998         v9 instructions if we have a v9 cpu.
23999
24000         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
24001         registers for global allocation.
24002
24003         * exceptions-sparc.c: Fixes.
24004         
24005 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
24006
24007         * liveness.c (mono_analyze_liveness): Optimized version.
24008
24009         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
24010
24011         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
24012         sparc work.
24013
24014         * basic-float.cs basic-calls.cs: New regression tests.
24015
24016 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
24017
24018         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
24019         sigaltstack implementation.
24020
24021         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
24022         
24023         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
24024         stuff if SIGSEGV_ON_ALTSTACK is not defined.
24025
24026 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
24027
24028         * mini.c: Fix warnings.
24029         
24030         * mini.c (mono_resolve_patch_target): New function which contains the
24031         arch independent part of the patching process.
24032
24033         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
24034         patching code to a separate function.
24035
24036 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
24037
24038         * mini.c (add_signal_handler): ifdef out on Windows
24039
24040 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
24041
24042         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
24043         cpu-sparc.md: Add exception handling support + other fixes.
24044
24045         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
24046         typed GC detection in --version.
24047
24048         * basic.cs exceptions.cs: New regression tests.
24049
24050         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
24051         the arch specific code can store data during a compilation.
24052
24053         * mini-ops.h: Add OP_SETFRET.
24054
24055         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
24056         function, register a separate icall for each arity, so the icalls can
24057         get a wrapper.
24058         
24059         * mini.c (mono_print_tree): Print negative offsets in a more readable
24060         form.
24061         
24062         * mini.c: Make signal handling work on sparc.
24063         
24064         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
24065
24066         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
24067
24068         * jit-icalls.c: Emulate truncl by aintl on solaris.
24069
24070         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
24071
24072 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
24073
24074         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
24075
24076 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
24077
24078         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
24079         a MarshalByRef type, inline a method that performs the check, taking into
24080         account that the object can be a proxy. Also implemented tow new opcodes:
24081         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
24082         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
24083         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
24084
24085 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
24086
24087         * mini-ppc.c: if a relative branch displacement is too big
24088         but it points to and area reachable with an absolute branch, 
24089         avoid the thunks.
24090
24091 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
24092
24093         * mini.c: optimize small copies in cpblk.
24094
24095 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
24096
24097         * basic-calls.cs basic-float.cs: New regression tests.
24098
24099         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
24100         negative offsets from %fp. Implement localloc. Fix local register 
24101         allocation. Fix the case when the this argument needs to be saved to
24102         the stack. Implement some missing opcodes.
24103
24104 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
24105
24106         * mini.c (mini_method_compile): Reenable global regalloc in methods
24107         with exception handlers.
24108
24109         * linear-scan.c (mono_varlist_sort): Fix warning.
24110
24111         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
24112
24113         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
24114         regalloc costs.
24115
24116         * liveness.c: Make all variables uses in exception clauses volatile, to
24117         prevent them from being allocated to registers. Fixes #42136.
24118
24119 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
24120
24121         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
24122         causes regressions.
24123
24124         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
24125         argument to mono_arch_regalloc_cost.
24126
24127         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
24128         precisely.
24129
24130 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
24131
24132         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
24133         Make the cost of allocating a variable to a register arch dependent.
24134
24135         * basic-calls.cs: Fix compilation of tests.
24136         
24137         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
24138         helper function to cut back on the number of #ifdefs needed.
24139
24140         * mini-ppc.c: Fix compilation.
24141
24142         * basic-calls.cs: New regression tests.
24143
24144         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
24145
24146         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
24147         of l0 since that is callee saved.
24148
24149         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
24150         to virtual calls.
24151
24152         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
24153         of delay instruction.
24154
24155         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
24156
24157         * mini.h (MonoCallInst): Add 'virtual' flag.
24158
24159         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
24160
24161 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
24162
24163         * *.cs: New regression tests.
24164
24165         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
24166         work.
24167
24168         * mini.c (mono_runtime_install_handlers): Fix build.
24169
24170         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
24171         'signal_stack_size' members.
24172
24173         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
24174         alternate signal stack.
24175
24176         * exceptions-x86.c: Add stack overflow handling.
24177
24178         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
24179         functions to arch independent code.
24180
24181         * mini.c (mono_print_tree): Print more detailed info for load_membase
24182         opcodes.
24183         
24184 2004-02-23  Martin Baulig  <martin@ximian.com>
24185
24186         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
24187
24188 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
24189
24190         * mini-x86.c: fixed reg allocation for div/rem.
24191
24192 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
24193
24194         * driver.c (mono_main): Report some configuratio options on --version.
24195
24196 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
24197
24198         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
24199         low in the address space. Correctly flush memory in thunks where we
24200         output native code.
24201
24202 2004-02-20  Martin Baulig  <martin@ximian.com>
24203
24204         * mini.c (mini_get_method): New static method; inflate all generic
24205         methods and methods in open generic instances.
24206         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
24207         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
24208
24209 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24210
24211         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
24212
24213         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24214
24215 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24216
24217         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24218
24219         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24220         it compile using Sun's compiler.
24221
24222 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24223
24224         * 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.
24225
24226         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24227
24228 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24229
24230         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24231         code.
24232         * mini-ppc.c: handle calls outside of the allowed range with thunks
24233         allocated using the code manager.
24234         * tramp-ppc.c: use the code manager to hold generated native code.
24235         Fixed the magic trampoline to just patch vtable entries.
24236
24237 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24238
24239         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24240         independent file.
24241
24242 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24243
24244         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24245         PPC.
24246
24247         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24248         if we have a working __thread implementation.
24249
24250         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24251         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24252
24253 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24254
24255         * mini-x86.c: Fix compilation under gcc 2.
24256         
24257 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24258
24259         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24260         contains a call to the wrapped function.
24261
24262         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24263         OP_<CALL>_IMM opcodes, and use them under X86.
24264         
24265         * mini.c (mono_jit_find_compiled_method): Fix warning.
24266
24267         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24268
24269         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24270
24271         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24272         functionality to mini.c.
24273
24274         * mini.c (mono_create_jump_trampoline): New function to create a jump
24275         trampoline. Return a compiled method instead of a trampoline if it
24276         exists. Add a cache for jump trampolines.
24277
24278         * mini.c (mono_jit_find_compiled_method): New function to return a
24279         compiled method if it exists.
24280
24281         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24282         mono_arch_create_jit_trampoline.
24283
24284         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24285         a jump trampoline. Fixes #52092.
24286         
24287 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24288
24289         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24290         which is not up-to-date. Add check_corlib_version () instead.
24291
24292         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24293         have to call it.
24294         
24295         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24296         since newer valgrind versions do not need it.
24297
24298         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24299         compile a method with a given set of optimizations.
24300
24301         * mini.c: Compile icall wrappers on-demand instead of at startup.
24302
24303         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24304         wrapper for an icall.
24305
24306 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24307
24308         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24309         #54063.
24310
24311         * iltests.il: Add test for non-empty stack before switch instruction.
24312
24313 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24314
24315         * mini.c: Add support for new stringbuilder marshalling conventions.
24316
24317         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24318
24319 2004-02-01  Martin Baulig  <martin@ximian.com>
24320
24321         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24322         in `ginst->mtype_argv'.
24323
24324 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24325
24326         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24327         facilitate grepping.
24328
24329 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24330
24331         * mini.c: fixed buglet in initobj generic implementation for references.
24332
24333 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24334
24335         * Makefile.am: make the version script conditional.
24336         * jit-icalls.c: handle missing truncl().
24337
24338 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24339
24340         * exceptions.cs: Add more tests for double->int conversion.
24341
24342         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24343         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24344
24345 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24346
24347         * driver.c: make --verbose --version emit an error
24348         if the loaded corlib doesn't match the runtime version.
24349
24350 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24351
24352         * mini-ppc.h: export ppc_patch().
24353         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24354         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24355         on par or better than on MacOSX.
24356
24357 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24358
24359         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24360         mono_lookup_pinvoke_call.
24361
24362         * mini-x86.c: Under windows, the default pinvoke calling convention is
24363         stdcall. Fixes #52834.
24364
24365         * mini.c (optimize_branches): Add an upper bound to the number of
24366         iterations to prevent infinite loops on strange loops. Fixes #53003.
24367
24368 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24369
24370         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24371         and ISINST. Fixes #52093.
24372
24373         * objects.cs (test_0_vector_array_cast): New tests.
24374         
24375 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24376
24377         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24378         checking in Array.Set ().
24379
24380         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24381         #52590.
24382
24383         * object.cs (test_0_multi_array_cast): New regression test.
24384
24385 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24386
24387         * exceptions-ppc.c: fix build on Linux/PPC.
24388
24389 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24390
24391         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24392         running under valgrind.
24393         (x86_magic_trampoline): Fix build bustage.
24394
24395         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24396         negative values as well. This is needed for the encoding of the line number
24397         info, since sometimes the line numbers are not in increasing order.
24398
24399 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24400
24401         * cpu-pentium.md (localloc): Increase the size of the localloc 
24402         instruction since it is a loop under Win32.
24403
24404         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24405         allocation.
24406
24407 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24408
24409         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24410         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24411         Max Horn (max@quendi.de). Fix file names in comments.
24412
24413 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24414
24415         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24416         avoid stack overflow.
24417         (replace_usage): Avoid uninitialized variable warnings.
24418
24419         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24420         and taking the address of valuetype variables.
24421
24422 2004-01-03  Patrik Torstensson
24423
24424         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24425         for other purposes than FP later on.
24426
24427 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24428
24429         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24430         of tail calls.
24431
24432 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24433
24434         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24435
24436 2003-12-30  Patrik Torstensson <p@rxc.se>
24437
24438         * mini-x86.h: Decreased number of availiable fp regs.
24439         Solves corner cases with FP spilling.
24440
24441 2003-12-23  Patrik Torstensson <p@rxc.se>
24442
24443         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24444         for floating point stack tracking / spilling on x86. 
24445         Fixes bug #49012.
24446         
24447         * basic-float.cs: added float mul overflow test.
24448
24449 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24450
24451         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24452
24453 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24454
24455         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24456         supports for cond branches that overflow the immediate
24457         overflow offset. mcs can compile simple programs.
24458
24459 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24460
24461         * exceptions-ppc.c: exception handling support wip:
24462         finally handlers get run on exception.
24463
24464 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24465
24466         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24467         profiling.
24468
24469 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24470
24471         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24472         initial support for stack walking and unwinding.
24473
24474 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24475
24476         * driver.c (mono_main): Make corlib-out-of-sync message more 
24477         descriptive. Also remove verify_corlib call.
24478
24479 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24480
24481         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24482         not overlap with other call's arguments, too.
24483
24484 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24485
24486         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24487         move to arch-specific code the choice of arch-specific
24488         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24489         * mini.c: ensure emulation calls will not interleave
24490         with other calls.
24491
24492 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24493
24494         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24495         the magic trampoline stack frame is dropped before executing
24496         the new method.
24497
24498 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24499
24500         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24501         and integer to fp conversions. Added support for overflowing
24502         arguments on the stack. Reserve a couple more registers as temps.
24503         Added support for aot compilation (as output still needs to be
24504         tweaked, though).
24505
24506 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24507
24508         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24509         Don't overwrite return register in some corner cases.
24510
24511 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24512
24513         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24514         static constructors when AOT compiling.
24515
24516         * driver.c (mono_main): Call mono_check_corlib_version.
24517
24518 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24519
24520         * cpu-g4.md, basic.cs: fixed div target register.
24521
24522 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24523
24524         * mini-ppc.c, basic.cs: shl_imm fix with test.
24525
24526 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24527
24528         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24529         structures by value. Misc fixes.
24530         * objects.cs: more tests.
24531
24532 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24533
24534         * mini-ppc.c: lconv.ovf.i implemented.
24535
24536 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24537
24538         * mini.c:
24539         (mini_init): don't error out if someone already called g_thread_init.
24540
24541 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24542
24543         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24544         to be any type per the spec. Fix abnormal memory usage when
24545         the same object is repeatedly thrown.
24546
24547 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24548
24549         * mini.c: check for overruns in IL code.
24550
24551 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24552
24553         * TODO: Add/remove some todo entries.
24554
24555 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24556
24557         * driver.c (mono_main): Call mono_verify_corlib.
24558
24559 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24560
24561         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24562         This has been moved to mini.c
24563         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24564         type being casted is marshalbyref it could be a proxy, so instead of
24565         emitting the type check code, emit a call to a runtime method that will
24566         perform the check by calling CanCastTo if needed.
24567
24568 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24569
24570         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24571         methods with large stack frames under Win32.
24572
24573 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24574
24575         * Makefile.am: Distribute regression tests.
24576
24577         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24578         at the end instead of inserting each variable into the sorted list.
24579
24580         * linear-scan.c (mono_varlist_sort): New helper function.
24581         
24582 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24583
24584         * mini.c: ensure arguments and locals are within bounds.
24585
24586 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24587
24588         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24589         related fixes.
24590
24591 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24592
24593         * mini.c (mono_cprop_copy_values): Fix crash.
24594
24595         * aot.c: Set verbosity back to 0.
24596         
24597 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24598
24599         * regalloc.c: complete memory leak fix by Laurent Morichetti
24600         (l_m@pacbell.net).
24601
24602 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24603
24604         * driver.c (main_thread_handler): Revert the previous patch.
24605
24606         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24607         under valgrind.
24608
24609         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24610         memory from the memory pool.
24611
24612         * driver.c (main_thread_handler): Turn on all optimizations when
24613         --aot is used.
24614
24615         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24616         an array for better performance.
24617
24618         * regalloc.c (mono_regstate_assign): Fix memory leak.
24619
24620         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24621         serialize the debug info.
24622
24623         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24624         debug info from the serialized representation.
24625
24626         * aot.c: Save debug info into the generated file and load it when 
24627         loading a method.
24628
24629         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24630
24631 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24632
24633         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24634         More FP-related fixes.
24635
24636 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24637
24638         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24639         and register allocation buglet. Hello world now runs.
24640
24641 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24642
24643         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24644         * tramp-ppc.c: fixed class init trampoline.
24645         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24646
24647 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24648
24649         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24650         mini.c: more ppc changes/fixes.
24651
24652 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24653
24654         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24655         Also optimize the case when the arguments are the same in the caller 
24656         and in the callee.
24657
24658         * iltests.il: Add tests for tail calls with valuetype arguments.
24659
24660 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24661
24662         * mini-ppc.c: fixes for struct return type.
24663
24664 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24665
24666         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24667         mono_spillvar_offset() to arch-specific code.
24668
24669 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24670
24671         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24672
24673 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24674
24675         * exceptions-x86.c: Fix stack space leaks.
24676         
24677         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24678         registers from the lmf if the method has save_lmf set.
24679
24680 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24681
24682         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24683         of icall wrappers into InvokeInDomain, since these are now per-domain.
24684
24685 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24686
24687         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24688         make some opcode emulation and intrinsic ops enabled/disabled 
24689         according to the architecture. More fixes.
24690
24691 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24692
24693         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24694
24695 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24696
24697         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24698         arch-specific handling for 'this' and struct return type to
24699         arch-specific code.
24700
24701 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24702
24703         * aot.c: prevent divide by zero error when reporting (it happened with
24704         Accessibility.dll).
24705
24706 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24707
24708         * mini.h (inst_switch): Remove unused macro.
24709
24710 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24711
24712         * aot.c:
24713         (load_aot_module): free 'info->methods' and 'info' properly. No more
24714         "free(): invalid pointer blah" messages when you have an old aot
24715         compiled assembly.
24716
24717 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24718
24719         * jit-icalls.c, mini.c: Added support for context static fields.
24720
24721 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24722
24723         * mini.c (mono_method_blittable): Methods which set LastError are not 
24724         blittable either. Fixes #51108.
24725         
24726 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24727
24728         * mini.c: flush icache.
24729         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24730
24731 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24732
24733         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24734
24735 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24736
24737         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24738         safe on IA32.
24739
24740         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24741         vararg calls.
24742
24743         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24744
24745 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24746
24747         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24748         instruction when the result is discarded.
24749
24750         * iltests.il (test_0_div_regalloc): New regression test.
24751
24752         * arrays.cs: Fix compilation error.
24753
24754 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24755
24756         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24757         float rules to inssel-x86.brg: sane architectures with FP registers
24758         don't need to implement these rules.
24759
24760 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24761
24762         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24763
24764 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24765
24766         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24767         implementation of 32 bit systems.
24768
24769 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24770
24771         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24772         (Jeroen Zwartepoorte).
24773
24774 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24775
24776         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24777         the caller and the callee matches.
24778         
24779         * mini.c (mono_method_to_ir): Add comment.
24780
24781         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24782         signbit is missing on some platforms.
24783
24784 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24785
24786         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24787
24788         * mini.c (setup_jit_tls_data): Call the new function.
24789         
24790         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24791
24792         * mini-x86.c: Add experimental support for fast access to the lmf
24793         structure under NPTL/Linux 2.6.x.
24794
24795 2003-11-06  Martin Baulig  <martin@ximian.com>
24796
24797         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24798         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24799         the debugger.
24800
24801 2003-11-02  Martin Baulig  <martin@ximian.com>
24802
24803         * mini.c (inflate_generic_field): New static method.
24804         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24805         generic instance and the field is declared in a generic type, call
24806         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24807
24808 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24809
24810         * mini.h mini.c (mono_method_same_domain): New function to return
24811         whenever the caller and the callee are in the same domain.
24812
24813         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24814
24815 2003-10-30  Martin Baulig  <martin@ximian.com>
24816
24817         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24818         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24819         method parameters.
24820         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24821         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24822
24823 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24824
24825         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24826         propagation.
24827
24828         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24829         object here, so it is in the correct appdomain etc.
24830
24831 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24832
24833         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24834         already done.
24835         (mono_method_to_ir): Avoid freeing the type created returned from
24836         mono_type_create_from_typespec, since it is put into an internal cache
24837         by the function. Fixes pointer.exe.
24838
24839         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24840         trampolines for icalls and pinvokes as well. Fixes #33569.
24841
24842 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24843
24844         * mini.c: Update after appdomain changes.
24845
24846         * mini.c (mono_jit_compile_method_inner): Allways compile native
24847         method wrappers in the root domain, since there can only be one
24848         instance of them, whose address is stored in method->info.
24849
24850 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24851
24852         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24853         environment variable. Instead detect automatically whenever running
24854         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24855         valgrind.h.
24856
24857 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24858
24859         * trace.c, trace.h: New files that implement the new trace option
24860         parsing. 
24861
24862         * driver.c: Document new --trace options.
24863
24864         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24865         mini-x86.c: Apply:
24866
24867         -       if (mono_jit_trace_calls)
24868         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24869
24870         * mini.h: prototypes.
24871         
24872 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24873
24874         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24875
24876         * mini.c inssel.brg: Implement typedefbyref opcodes.
24877
24878         * mini.c (mono_jit_compile_method): Remove unused local variable.
24879
24880         * mini.c (mono_jit_compile_method_inner): Ditto.
24881         
24882 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24883
24884         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24885         
24886         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24887
24888 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24889
24890         * mini.c (mono_no_aot): Remove unused global variable.
24891
24892         * mini.c: Thread safety fixes.
24893
24894 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24895
24896         * mini.c (mono_create_class_init_trampoline): Add a lock around
24897         class_init_hash_addr.
24898
24899         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24900         #30073.
24901
24902         * mini.c: Decompose the NEWARR instruction before decomposing its
24903         arguments. Fixes #30073.
24904
24905 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24906
24907         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24908         convention.
24909
24910 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24911
24912         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24913
24914         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24915
24916         * driver.c: Add support for compiling icall wrappers to --compile.
24917
24918 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24919
24920         * inssel.brg: The empty value in class->interface_offsets is -1, not
24921         0. Fixes #49287.
24922
24923 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24924
24925         * objects.cs: New test for 'is' operator on an array of interfaces.
24926
24927 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24928
24929         * tramp-ppc.c: update trampoline code to support jumps
24930         and class initialization.
24931
24932 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24933
24934         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24935
24936         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24937
24938         * inssel.brg (OP_UNBOX): Remove unused rule.
24939
24940         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24941         region instead of one for each method. Fixes #47813.
24942
24943 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24944
24945         * exceptions.cs (test_0_nested_finally): New regression test for
24946         nested exception handlers.
24947
24948         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24949
24950         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24951
24952         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24953         inlining.
24954
24955         * mini.c (mono_method_check_inlining): Make the inlining limit 
24956         configurable by an environment variable.
24957         
24958         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24959
24960         * mini.h: Bump AOT file version.
24961
24962         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24963         token, store the image along with the token, since the token might not 
24964         refer to the same image as the method containing the relocation, 
24965         because of inlining.
24966
24967 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24968
24969         * mini.c (mono_precompile_assemblies): New function to compile
24970         all methods in all loaded assemblies.
24971
24972         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24973
24974         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24975         iassign and fassign to int*, since they can contain large negative
24976         values if the register is spilled. Also added some comments. Fixes
24977         #45817.
24978
24979         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24980         under Win32. Fixes #42964.
24981
24982 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24983
24984         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24985
24986         * aot.c: Added support for AOT compiling methods which contain calls
24987         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24988         handled.
24989         
24990         * driver.c (compile_all_methods): Run the compilation in a thread
24991         managed by mono. Fixes #44023.
24992
24993         * mini.c (mono_codegen): Print full method name in verbose output.
24994
24995         * mini-x86.c (mono_arch_patch_code): Fix warning.
24996         
24997         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24998         jumps, since the method we are jumping to might be domain-specific.
24999
25000         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
25001
25002 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25003
25004         * inssel.brg: string chars are unsigned.
25005
25006 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
25007
25008         * TODO: New todo item.
25009
25010         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
25011         which calls mono_runtime_class_init and patches the call site to
25012         avoid further calls.
25013         (mono_arch_create_class_init_trampoline): New arch specific function 
25014         to create a class init trampoline.
25015         (create_trampoline_code): Generalized so it can create
25016         class init trampolines as well.
25017
25018         * mini.c (helper_sig_class_init_trampoline): New helper variable.
25019         (mono_create_class_init_trampoline): New function to create and cache
25020         class init trampolines.
25021         (mono_find_class_init_trampoline_by_addr): New function to lookup the
25022         vtable given the address of a class init trampoline. Used by the
25023         patching process.
25024         (mono_codegen): Generate a call to a trampoline instead of
25025         mono_runtime_class_init in LDSFLD[A].
25026         (mono_codegen): Add relocations for the new trampoline.
25027         
25028         * mini.h mini-x86.c aot.c: Added a new relocation type: 
25029         MONO_PATCH_INFO_CLASS_INIT.
25030
25031         * mini.h: Bump AOT version number.
25032
25033         * aot.c: Create a copy of the loaded code instead of using the original
25034         so methods which call each other will be close in memory, improving
25035         cache behaviour.
25036         
25037         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
25038         patch since it breaks the regression tests.
25039         
25040         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
25041         for the register saving instruction sequence since the 
25042         frame_state_for function in glibc 2.3.2 don't seem to detect it.
25043
25044 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
25045
25046         * TODO: Fix todo item && remove another.
25047
25048 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
25049
25050         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
25051         previous checkin.
25052
25053         * aot.c: Moved the check for MONO_LASTAOT into the initialization
25054         function of the module.
25055
25056         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
25057         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
25058         --no-aot command line option.
25059
25060 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
25061
25062         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
25063         by Bernie Solomon (bernard@ugsolutions.com).
25064
25065         * inssel.brg: Refactor the interface offset table related code into
25066         its separate functions and add support for the AOT case.
25067
25068 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
25069
25070         * aot.c (mono_aot_get_method_inner): Fix memory leak.
25071         
25072         * aot.c: Added mono_aot_verbose variable and made all debugging
25073         output depend on the value of this variable.
25074
25075         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
25076         method_label and info_label.
25077
25078         * mini.h mini-x86.c aot.c: Added a new relocation type 
25079         MONO_PATCH_INFO_IID for klass->interface_id.
25080
25081         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
25082         the MonoJitInfo structure.
25083
25084         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
25085         a non-root appdomain in shared mode.
25086
25087 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25088
25089         * aot.c: make aot loader less verbose. Remove free of unused variable.
25090
25091 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25092
25093         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
25094
25095         * .cvsignore: Added *.dll.
25096
25097         * mini.c (mono_print_tree_nl): New function callable while debugging.
25098
25099         * mini.c (mono_print_code): Export this.
25100
25101         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
25102         patched code.
25103
25104 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
25105
25106         * mini.h (MonoCompile): Added 'jit_info' field.
25107
25108         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
25109         the cfg structure, since it is needed by the AOT compiler.
25110
25111         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
25112
25113         * aot.c: A major rewrite. Changes include:
25114         - save exception tables for methods which have them.
25115         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
25116         to g_module_symbol.
25117         - reworked the file format so it is now much smaller and needs
25118         fewer relocation entries.
25119         
25120 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25121
25122         * aot.c (load_aot_module): Fix build bustage on platforms without
25123         Boehm GC.
25124
25125 2003-09-04  Martin Baulig  <martin@ximian.com>
25126
25127         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
25128
25129 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25130
25131         * TODO: Some new optimization ideas.
25132
25133         * aot.c: Move AOT module loading logic here from mono_assembly_open.
25134
25135         * aot.c: Save the optimization flags used to compile the code into
25136         the AOT module.
25137
25138         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
25139         support emitting domain specific code.
25140         
25141         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
25142         no longer domain neutral. It can be made domain neutral by compiling 
25143         with --optimize=shared.
25144
25145         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
25146         between appdomains.
25147
25148         * driver.c mini.h mini.c: New --no-aot debugging option which disables
25149         loading of AOT code.
25150
25151         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
25152         
25153         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
25154         if there is no domain neutrality information.
25155
25156 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25157
25158         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
25159         format version into the generated library.
25160
25161         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
25162         callee method into the caller since one of them could be shared.
25163
25164         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
25165         system exceptions from AOT code now works.
25166
25167         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
25168         method if it is domain neutral and the callee is not.
25169
25170         * graph.c (cfg_emit_one_loop_level): Fix warning.
25171
25172 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25173
25174         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
25175         last checkin.
25176
25177 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25178
25179         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
25180         is needed  by code which is executed before mono_runtime_init ().
25181         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
25182         
25183         * mini.c (mono_thread_abort): Fix warning.
25184         (mono_jit_compile_method): Call static constructor in the AOT case too.
25185
25186         * aot.c (mono_compile_assembly): Fix warning.
25187
25188 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25189
25190         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
25191
25192 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
25193
25194         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
25195
25196         * cpu-pentium.md: Fix the length of call opcodes so they include the
25197         ESP restoring instruction. Fixes #47968.
25198
25199 2003-08-28  Martin Baulig  <martin@ximian.com>
25200
25201         * mini-x86.c (mono_arch_call_opcode): Added support for
25202         MONO_TYPE_GENERICINST.
25203
25204         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
25205
25206 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25207
25208         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
25209         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
25210
25211         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
25212         metadata_section.
25213
25214 2003-08-26  Martin Baulig  <martin@ximian.com>
25215
25216         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25217         when reporting an error, set this to the actual error location.
25218         (mono_method_to_ir): Report the correct error location if
25219         get_basic_blocks() returned an error.
25220
25221 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25222
25223         * mini.c (mono_type_blittable): OBJECT is not blittable.
25224         (mono_method_blittable): Methods which have marshalling descriptors
25225         are not blittable either. Fixes #47842.
25226
25227 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25228
25229         * driver.c mini.c: Use an environment variable instead of a global 
25230         variable. Also fix the build.
25231
25232         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25233         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25234         reporting this. 
25235
25236         * driver.c mini.c: Added --with-valgrind option to turn off some
25237         code which prevents mono from running under valgrind.
25238
25239         * mini.c (mono_emit_call_args): Fixed warning.
25240
25241         * mini.c (mono_emulate_opcode): Fixed warning.
25242
25243 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25244
25245         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25246         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25247         regalloc.c, regalloc.h: specify available registers in arch-specific
25248         code and support floats in the regallocator (patch by Laurent Morichetti 
25249         <l_m@pacbell.net>)
25250
25251 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25252
25253         * mini.c: mono_thread_current() can be called only after
25254         mono_runtime_init(): rearrange code to not call it early on.
25255
25256 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25257
25258         * mini.c: allocate jump tables in the code mempools.
25259
25260 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25261
25262         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25263         freed.
25264
25265 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25266
25267         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25268         12 to 16.  This fixes bug #47453.
25269
25270
25271 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25272
25273         * mini-ppc.c: fixed indexed load and unsigned compares.
25274
25275 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25276
25277         * mini.c: reenabled installation of handler for
25278           thread abort signal.
25279
25280 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25281
25282         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25283         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25284         until it's fixed and actually useful.
25285
25286 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25287
25288         * inssel-long32.brg: couple more opcodes implemented.
25289
25290 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25291         
25292         * mini-sparc.c: Even more opcodes implemeted.
25293
25294 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25295
25296         * mini-sparc.c: More opcodes implemented.
25297
25298 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25299
25300         * mini-sparc.c: More opcodes implemented.
25301
25302 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25303
25304         * inssel-sparc.brg: Add some needed rules.  Direct
25305         copy from PPC.
25306         * Makefile.am: Use inssel-sparc.brg
25307         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25308         an assert happy for now.
25309
25310 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25311
25312         * mini-sparc.c: Fixed compile errors.
25313         * exceptions-sparc.c: Same.  We now produce a mono binary 
25314         on sparc-linux.  Yea.
25315
25316 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25317
25318         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25319         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25320         They compile, but do not work.
25321
25322 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25323
25324         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25325         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25326         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25327         (ct@gentoo.org).
25328
25329 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25330
25331         * mini.c: more opcodes implemented and better support for generics.
25332
25333 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25334
25335         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25336         * mini.c, mini.h: first cut at generics support: some new instructions 
25337         added and changed the behaviour of some of the existing ones.
25338
25339 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25340
25341         * mini.c: Removed definition of metadata_shared mutex here.
25342
25343 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25344
25345         * mini-x86.c: make vararg calls work for instance methods.
25346
25347 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25348
25349         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25350         returns the arguments in a separte list, now.
25351
25352 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25353
25354         * aot.c, mini.c: updates for array type representation changes.
25355
25356 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25357
25358         * mini.c: register function to perform jit shutdown.
25359
25360 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25361
25362         * mini.c: use a faster allocator if possible.
25363
25364 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25365
25366         * aot.c: some cleanups and portability changes.
25367
25368 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25369
25370         * mini.c: use faster allocation for CEE_BOX if possible.
25371
25372 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25373
25374         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25375         Moved inlined mempcy code to its own function so that is can be
25376         reused. Added an inline memset function as well (optimized initobj).
25377         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25378
25379 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25380
25381         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25382
25383 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25384
25385         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25386         arch code can setup the cpu for CLR execution, if needed.
25387         We use it on x86 to set the precision of FP operations.
25388
25389 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25390
25391         * mini.c: disable some optimizations if we can guess they'll cost too
25392         much for a given method.
25393
25394 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25395
25396         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25397         
25398 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25399         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25400         info collection support.
25401
25402 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25403
25404         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25405         is now implemented in the profiling API. Get rid of a couple of
25406         unnecessary global variables.
25407
25408 2003-06-15  Nick Drochak <ndrochak@gol.com>
25409
25410         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25411         * cpu-g4.md: add op_bigmul and op_bigmul_un
25412         * cpu_pentium.md: add op_bigmul_un
25413         * inssel-long32.brg: add rule for unsigned bigmul
25414         * mini-ops.h: define OP_BIGMUL_UN
25415         * mini-x86.c: THE BUG: handle (un)signed properly
25416         * mini.c: choose unsigned opcode if needed.
25417         This set of patches fixes bug #44291
25418
25419 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25420
25421         * mini.c (optimize_branches): improved to handle all kinds of
25422         conditional branches.
25423
25424 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25425
25426         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25427         don't raise exceptions.
25428
25429 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25430
25431         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25432         to arch-specific files.
25433
25434 2003-06-09  Martin Baulig  <martin@ximian.com>
25435
25436         * Makefile.am (libs): Added $(LIBGC_LIBS).
25437
25438 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25439
25440         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25441         and OP_ATAN (fixes bug#44293).
25442
25443 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25444
25445         * Makefile.am, mini-x86.c: rename cpu description array to
25446         pentium_desc, since some compilers define the 'pentium' preprocessor
25447         symbol.
25448
25449 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25450
25451         * mini.c (mini_select_instructions): add explicit branch if the
25452         following block is not the false target of a conditional branch -
25453         we need this with any optimization that reorder or remove bblocks
25454
25455         * mini.c (optimize_branches): bug fixes
25456
25457 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25458
25459         * mini.c (mono_method_to_ir): inline static readonly fields
25460
25461         * ssa.c (fold_tree): start cfold support for long (very simple
25462         cases only)
25463
25464         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25465
25466 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25467
25468         * inssel.brg: fixed memcpy (bug #44219).
25469
25470 2003-06-05  Dick Porter  <dick@ximian.com>
25471
25472         * driver.c: Set the glib log levels to not abort if g_message
25473         recurses.
25474
25475         g_set_prgname() has to happen before mini_init() so that the
25476         process handle gets the info.
25477         
25478 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25479
25480         * driver.c: add intrins to the default optimizations to get wider
25481         exposure.
25482
25483 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25484
25485         * mini.h: some large basic blocks will overflow a 16-bit
25486         integers for symbolic registers.
25487
25488 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25489
25490         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25491         (mono_arch_output_basic_block): fix bug 43499 
25492
25493 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25494
25495         * mini.c: kill duplicated definition of mono_debug_format.
25496
25497 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25498
25499         * mini-x86.c, arrays.cs: fixed register allocation bug.
25500
25501 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25502
25503         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25504
25505         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25506
25507 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25508
25509         * mini.c:
25510         (print_method_from_ip): also print source location information if
25511         available.
25512
25513 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25514
25515         * mini.c (mono_find_block_region): bug fix in region code
25516         (mini_method_compile): enable removing unreachable code again, but
25517         only in methods without exception clauses.
25518
25519 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25520
25521         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25522         Implemented arglist opcode and handling of TypedReference type.
25523         Fixed x86 call convention when a structure is returned.
25524         Minimal support for calling static vararg methods.
25525
25526 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25527
25528         * mini.c (mini_method_compile):  always remove unreachable code,
25529         because the code in them may be inconsistent  (access to dead
25530         variables for example).
25531
25532 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25533
25534         * driver.c, debug-mini.c: warning fixes.
25535
25536 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25537
25538         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25539
25540 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25541
25542         * mini.c: thread-static fields are registered in mono_class_vtable(),
25543         so ensure the function is called before checking for them.
25544
25545 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25546
25547         * mini.c (optimize_branches): fix for bug 43586
25548
25549         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25550         overflow (fixes Bug #43639)
25551
25552 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25553
25554         * mini.c, objects.cs: allow the use of stobj for primitive types.
25555
25556 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25557
25558         * mini.c: be less strict about argument checking until we support
25559         running the verifier.
25560
25561 2003-05-27  Nick Drochak <ndrochak@gol.com>
25562
25563         * basic-long.cs: tests for (ulong)int * (ulong)int also
25564         * mini.c: use the same trick for (ulong)int * (ulong)int
25565
25566 2003-05-27  Nick Drochak <ndrochak@gol.com>
25567
25568         * basic-long.cs: add regression test for (long)int * (long)int
25569         * cpu-pentium.md: add op_bigmul specification
25570         * inssel-long32.brg: add OP_BIGMUL rule
25571         * mini-ops.h: add OP_BIGMUL
25572         * mini-x86.c: register allocator: handle case where src1 needs to be
25573         in EAX.
25574         * mini.c: substitute special BIGMUL opcode in the tree for 
25575         (long)int * (long)int
25576
25577 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25578
25579         * jit-icalls.c: call the type ctor on field access if needed.
25580
25581 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25582
25583         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25584         to a method (including results of ldelema, bug#43207).
25585
25586 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25587
25588         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25589         colors to show exception handler blocks.
25590
25591         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25592         (fix for pinvoke7.cs).
25593
25594 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25595
25596         * mini.h, mini.c: ensure correct initialization order for types that
25597         require it. Prepare for lazy compilation of jit icall wrappers.
25598         Provide a name for opcode emulation to reduce unneeded mallocing.
25599
25600 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25601
25602         * mini-x86.c: better register restoring code and profiling
25603         support for tail calls.
25604
25605 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25606
25607         * mini.h, driver.c: prepare for leaf methods optimization.
25608
25609 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25610
25611         * mini.c: get targets of branches before converting a method.
25612
25613 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25614
25615         * mini.c (optimize_branches): added some experimental code (disbaled) 
25616
25617 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25618
25619         * mini.c (optimize_branches): fix branch to branch optimization 
25620
25621         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25622
25623         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25624
25625         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25626
25627         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25628         if needed.
25629
25630 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25631
25632         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25633         enable use of interface variables again.
25634
25635         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25636         I1 to registers because there is no simply way to sign extend 8bit
25637         quantities in caller saved registers on x86.
25638
25639         * inssel-float.brg: set costs of some rules to 2 so
25640         that monobure always select the arch. specific ones if supplied,
25641         regardless of the order we pass the files to monoburg.
25642
25643 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25644
25645         * mini.c, mini-x86.c: since the magic trampoline for jumps
25646         can't patch the code directly, we do it as soon as the
25647         method gets compiled.
25648
25649 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25650
25651         * mini-x86.c, mini.h: introduce a new patching method
25652         to support CEE_JMP and tail calls.
25653         * mini.c: obey tail.call. Don't precompile methods target
25654         of CEE_JMP.
25655         * tramp-x86.c: new trampoline code to handle methods
25656         reached through a jump.
25657
25658 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25659
25660         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25661         bit values to registers
25662
25663 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25664
25665         * mini.c (mono_compile_get_interface_var): share interface
25666         variables if possible.
25667
25668 2003-05-16  Martin Baulig  <martin@ximian.com>
25669
25670         * debug-mini.c (mono_init_debugger): New function to initialize
25671         the debugger.  This is not in the debugger since it needs to
25672         access some of mini's internals.
25673
25674 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25675
25676         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25677
25678 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25679
25680         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25681         for value type handling.
25682
25683 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25684
25685         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25686         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25687
25688 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25689
25690         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25691           the constructor through a proxy.
25692
25693 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25694
25695         * jit-icalls.c, inssel.brg: fixes to array element address
25696         calculations.
25697
25698 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25699
25700         * mini-x86.c (is_regsize_var): allocate pointer to registers
25701
25702 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25703
25704         * driver.c: fixed typo, added intrins to the set of optimizations
25705         tested with regressions.
25706
25707 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25708
25709         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25710         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25711         test case.
25712
25713 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25714
25715         * inssel.brg: remove some common pop instructions without side effects
25716
25717 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25718
25719         * inssel-x86.brg: fixed thinko in int to double conversions.
25720
25721 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25722
25723         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25724
25725 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25726
25727         * inssel-long32.brg: two more missing instructions.
25728
25729 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25730
25731         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25732         if not already set.
25733
25734 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25735
25736         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25737         correctly.
25738
25739         * basic-float.cs: Added tests for negative zero.
25740
25741 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25742
25743         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25744         a couple of missing operations for long casts, with test cases.
25745
25746 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25747
25748         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25749
25750 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25751
25752         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25753         code size estimation.
25754
25755 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25756
25757         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25758         abstract methods (fix bug 42542)
25759
25760         * aot.c: add ability to handle array types
25761         
25762 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25763
25764         * mini.c: Call the _specific versions of the object allocation
25765         functions if possible.
25766
25767 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25768
25769         * driver.c: call setlocale ().
25770
25771 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25772
25773         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25774         windows build.
25775
25776 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25777
25778         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25779
25780         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25781         wrappers (fix bug 42122)
25782
25783 2003-05-04  Martin Baulig  <martin@ximian.com>
25784
25785         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25786
25787         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25788         s/mini_set_defaults/mono_set_defaults/g.
25789
25790 2003-05-04  Martin Baulig  <martin@ximian.com>
25791
25792         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25793
25794 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25795
25796         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25797         (reported by Don Roberts).
25798
25799 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25800
25801         * mini.c: temporarily work around two bugs for this release.
25802
25803 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25804
25805         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25806         that contains -export-dynamic and it makes using the ld script
25807         useless.
25808         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25809
25810 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25811
25812         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25813         specific cpu.
25814
25815 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25816
25817         * mini.c: make sure leave calls all the needed finally blocks,
25818         even when the target jumps out of multiple exception clauses.
25819
25820 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25821
25822         * ldscript, Makefile.am: add linker script to reduce the number of
25823         exported symbols (should also fix the issues with libwine defining
25824         some of the same symbols in io-layer).
25825
25826 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25827
25828         * driver.c (mini_main): Avoid assertion when no file name is given on 
25829         the command line.
25830
25831 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25832
25833         * driver.c: added --version/-V command line option.
25834         Added the inline optimization in the regression tests.
25835
25836 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25837
25838         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25839         to the type in the method signature (fixes bug#42134).
25840
25841 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25842
25843         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25844
25845 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25846
25847         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25848
25849 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25850
25851         * driver.c: fixed bug #42100.
25852
25853 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25854
25855         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25856
25857 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25858
25859         * mini.c: moved most of the code required to do inlining to its own
25860         function so it can be reused. Inline also ctors if appropriate.
25861
25862 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25863
25864         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25865         the runtime can call mono API functions.
25866
25867 2003-04-27  Martin Baulig  <martin@ximian.com>
25868
25869         * debug-mini.c (mono_debug_init_method): Added
25870         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25871         send a notification to the debugger.
25872
25873         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25874         running in the Mono Debugger, just pass the breakpoint number to
25875         mono_debug_init_method().
25876
25877         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25878
25879 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25880
25881         * mini.c: allow some more unsafe compares.
25882
25883 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25884
25885         * mini-x86.c, Makefile.am: make distcheck works (partially from
25886         a patch by Richard Lee <r.h.lee@attbi.com>).
25887         * regset.c, regset.h: removed, they are unused.
25888
25889 2003-04-25  Dick Porter  <dick@ximian.com>
25890
25891         * driver.c: Usage reports the name as 'mono' not 'mini'
25892         * exceptions-x86.c: Build and run on freebsd
25893
25894 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25895
25896         * Makefile.am: install the program with the 'mono' name and
25897         the library as libmono instead of mini and libmini.
25898
25899 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25900
25901         * driver.c: provide the APIs for the embedding interface of the old jit.
25902
25903 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25904
25905         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25906
25907 2003-04-23  Martin Baulig  <martin@ximian.com>
25908
25909         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25910
25911         * driver.c: Added `--debug' command line argument to enable
25912         debugging support.
25913
25914 2003-04-23  Martin Baulig  <martin@ximian.com>
25915
25916         * debug.[ch]: Removed.  The code is now in
25917         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25918
25919         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25920         last six months.
25921
25922 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25923
25924         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25925
25926 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25927
25928         * mini.c:
25929         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25930         mono_domain_finalize.
25931         (mini_method_compile): use mono_method_profile* if the the option is
25932         enabled.
25933
25934 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25935
25936         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25937         methods with their wrapper.
25938
25939         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25940         methods with their wrapper.
25941
25942         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25943         their wrapper.
25944
25945         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25946         wrapper.
25947
25948         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25949         methods.
25950
25951 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25952
25953         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25954
25955 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25956
25957         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25958         of the mempool. This is slightly faster and uses less memory
25959
25960 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25961
25962         * mini.c: avoid O(n) allocation for variables.
25963
25964 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25965
25966         * mini.c: handle items on the stack after inlining methods.
25967
25968 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25969
25970         * mini.c: make the method->opcode optimization dependent
25971         on MONO_OPT_INSTRINS and do it lazily.
25972
25973 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25974
25975         * driver.c: print overall results at the end of regression run.
25976
25977 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25978
25979         * inssel.brg: don't overwrite symbolic registers.
25980
25981 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25982
25983         * inssel-x86.brg: fix conversion from long to float.
25984
25985 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25986
25987         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25988
25989 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25990
25991         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25992
25993         * driver.c: Added --print-vtable option as in the old JIT.
25994
25995 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25996
25997         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25998
25999 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
26000
26001         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
26002
26003 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
26004
26005         * mini.c regalloc.c regalloc.h: Fix memory leak.
26006
26007 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
26008
26009         * aot.c (mono_aot_get_method): register all used strings
26010
26011 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
26012
26013         * mini.c: always intern strings references with ldstr at compile time.
26014
26015 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
26016
26017         * Makefile.am: add BUILT_SOURCES.
26018
26019 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
26020
26021         * driver.c: give a better error message when the assembly to execute
26022         doesn't have an entry point.
26023
26024 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
26025
26026         * Makefile.am: added hack for automake
26027
26028         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
26029         correct sematics.
26030
26031         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
26032
26033 22003-04-07  Martin Baulig  <martin@ximian.com>
26034
26035         * Makefile.am: Added Makefile.am.
26036
26037         * debugger-main.c: Removed, this is now in the debugger where it
26038         belongs.
26039
26040         * mini.pc.in: Call this package `mini' for the moment.
26041
26042
26043
26044
26045
26046
26047
26048
26049
26050
26051
26052
26053
26054
26055