2010-07-25 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-07-25  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-trampolines.c (common_call_trampoline): Fix a warning.
4
5 2010-07-24  Zoltan Varga  <vargaz@gmail.com>
6
7         * mini-s390x.c: Change the calling convention to pass this as first as on other
8         architectures. Remove some dead code from the get_vcall_slot().
9
10 2010-07-24  Geoff Norton  <gnorton@novell.com>
11
12         * mini-darwin.c: Having reviewed xnu-1504.7.4 it is safe to call fork directly
13         here, it seems the old implementation was a hold over from the linux behaviour
14         This fixed gdb backtrace on amd64 and ppc.
15
16 2010-07-23  Zoltan Varga  <vargaz@gmail.com>
17
18         * xdebug.c (mono_save_trampoline_xdebug_info): Call
19         mono_loader_lock/unlock_if_inited () to avoid asserts on some platforms during
20         startup.
21
22 2010-07-23  Marek Habersack  <mhabersack@novell.com>
23
24         * Makefile.am (version.h): generate version using GIT commit info,
25         removed the old svn and git-svn code.
26
27 2010-07-22  Jb Evain  <jbevain@novell.com>
28
29         * method-to-ir.c (BRANCH_COST): set to 10.
30
31 2010-07-20  Zoltan Varga  <vargaz@gmail.com>
32
33         * method-to-ir.c (op_to_op_src2_membase): Reorganize the amd64 op->op membase
34         code, it was missing a few 'break's.
35
36 2010-07-20  Zoltan Varga  <vargaz@gmail.com>
37
38         * method-to-ir.c (mini_emit_inst_for_method): Add Array.GetLength/GetLowerBound ().
39         Fixes #618176.
40
41 2010-07-16  Zoltan Varga  <vargaz@gmail.com>
42
43         * mini-arm.c: Fix the arm build by passing a MonoGenericSharingContext to get_call_info.
44
45 2010-07-16  Zoltan Varga  <vargaz@gmail.com>
46
47         * mini-llvm.c: Add more SIMD instructions.
48
49 2010-07-15  Miguel de Icaza  <miguel@novell.com>
50
51         * mini.c: Allow "casts" to be passed on MONO_DEBUG as well.
52
53 2010-07-15  Zoltan Varga  <vargaz@gmail.com>
54
55         * mini-ia64.c: Change the calling convention to pass this as first as on other
56         architectures. Remove some dead code from the get_vcall_slot() and the implementation
57         of the CALL_MEMBASE opcodes as a result.
58
59 2010-07-13  Miguel de Icaza  <miguel@novell.com>
60
61         * mini.c: LLVM is disabled by default on LLVM builds.  You can use
62         the MONO_ENV_OPTIONS to set the --llvm flag.
63
64 2010-07-13  Atsushi Enomoto  <atsushi@ximian.com>
65
66         * driver.c : windows build fix for --with-moonlight.
67
68 2010-07-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
69
70         * mini.c|h:
71         * mini-exceptions.c: Add an option to MONO_DEBUG for tracking down exceptions
72         that reach native code from a reverse pinvoke.
73
74 2010-07-11  Zoltan Varga  <vargaz@gmail.com>
75
76         * method-to-ir.c (mono_method_to_ir): Kill some duplicated code.
77
78         * mini-<ARCH>.c (get_call_info): Call mini_type_get_underlying_type () before passing
79         a type to MONO_TYPE_IS_REFERENCE (), since the latter can't handle VAR/MVAR.
80         Fixes #620864.
81
82         * generics.cs: Add a test.
83
84 2010-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
85
86         * mini.c (mono_jit_compile_method_inner): Don't bomb out if we don't
87         support a given runtime implemented method.
88
89 2010-07-10  Mark Probst  <mark.probst@gmail.com>
90
91         * mini-darwin.c: Register the exception thread with the GC.
92
93 2010-07-10  Zoltan Varga  <vargaz@gmail.com>
94
95         * mini-llvm.c (set_metadata_flag): Set metadata flags only when using the LLVM
96         mono branch.
97
98 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
99
100         * mini.h (MONO_INST_HAS_CONSTANT_LOAD): New instruction flag marking loads which load
101         from constant memory.
102
103         * ir-emit.h: Clean up the _FAULT macros a bit.
104
105         * decompose.c: Mark some loads as constant.
106
107         * mini-llvm.c: Pass the constant-ness of loads to LLVM using custom metadata.
108
109 2010-07-09  Miguel de Icaza  <miguel@novell.com>
110
111         * driver.c (mini_usage): Change the name of the --sgen flag to be
112         --gc=sgen and also support --gc=boehm.   These flags can also be
113         set on MONO_ENV_OPTIONS to propagate this to children processes.
114
115         * main.c: Remove the MONO_VM_OPTIONS environment variable that
116         only supported "sgen" and "llvm" config options and instead parse
117         the MONO_ENV_OPTIONS as options that are parsed by the command
118         line parser.   Any command line option that Mono supports can be
119         passed in this environment variable.
120
121 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
122
123         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks +
124         LLVM.
125
126         * mini.c (mini_method_compile): Run abcrem uncoditionally when LLVM is used since
127         it can now eliminate more than just bounds checks.
128
129         * ir-emit.h: Add MAY_FAULT versions of the LOAD_MEMBASE macros which take
130         an extra 'fault' argument.
131
132         * method-to-ir.c: Set the MONO_INST_FAULT of the array opcodes which are decomposed
133         later.
134
135         * decompose.c: Propagate the MONO_INST_FAULT flag from the array opcodes to their
136         decomposition.
137
138         * mini-llvm.c: Remove support for the X86/AMD64 COMPARE_MEMBASE opcodes, they are
139         no longer generated when LLVM is used.
140
141         * abcremoval.c: Eliminate MONO_INST_FAULT flags if possible.
142
143 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
144
145         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks + LLVM.
146
147 2010-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
148
149         * driver.c: Moonlight: Force line buffering for stdout.
150
151 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
152
153         * mini-llvm.c (emit_load): Revert the last changes, the load/store intrinsics
154         are only callable using invoke.
155
156 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
157
158         * mini-llvm.c (process_bb): Use emit_load () in one more place.
159
160         * mini-llvm-cpp.cpp (force_pass_linking): Link in more function passes so
161         MONO_LLVM=xxx is actually usable.
162
163         * mini-llvm.c (emit_load): Use the mono specific load intrinsics even outside clauses
164         since LLVM might be able to hoist them out of loops.
165         (emit_store): Ditto.
166
167 2010-07-08  Neale Ferguson <neale@sinenomine.net>
168
169         * mini-s390x.c: Correct setting value of header from cfg->header - fix crash
170         in typeload-unaligned test.
171
172 2010-07-08  Zoltan Varga  <vargaz@gmail.com>
173
174         * xdebug.c (mono_save_trampoline_xdebug_info): Make this receive a MonoTrampInfo.
175
176         * tramp-<ARCH>.c: Move the calls to save_trampoline_xdebug_info () into
177         mini-trampolines.c/mini-exceptions.c. Use a more human readable name for
178         generic trampolines+rgctx fetch trampolines.
179
180 2010-07-08  Geoff Norton  <gnorton@novell.com>
181
182         * genmdesc.pl: nacl is not a new inst slot, it just modifies the size slot.
183
184 2010-07-07  Zoltan Varga  <vargaz@gmail.com>
185
186         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Add xdebug info.
187
188         * method-to-ir.c (emit_imt_argument): Call add_outarg_reg even if MONO_ARCH_IMT_REG
189         is not defined in the LLVM case to keep the imt arg alive.
190
191 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
192
193         * exceptions-<ARCH>.c mini-llvm.c: Clean up the naming of the llvm related trampoline
194         functions, now its 'llvm_<FOO>_trampoline'.
195
196         * method-to-ir.c (emit_imt_argument): Fix llvm support.
197
198         * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
199         cannot be passed in the same call.
200
201         * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
202         register to be the same as the RGCTX register, the two can't be used together on
203         the same call.
204
205 2010-07-05  Miguel de Icaza  <miguel@novell.com>
206
207         * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
208         that allows the user to force the VM to use llvm or sgen.
209
210 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
211
212         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
213         before processing the exception on PPC too.
214
215         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
216
217         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
218         'this' is always passed as the first argument, before the vtype ret arg. This
219         simplifies get_this_arg_reg () and LLVM integration.
220
221 2010-07-05  Martin Baulig  <martin@ximian.com>
222
223         * exceptions-x86.c (mono_arch_handle_exception): Port this to
224         Windows; apply my patch from r159782 in the mono-2-6 branch.
225
226 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
227
228         * Makefile.am: Don't build the debug assembler files if we're building without
229         debugger support.
230
231 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
232
233         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
234
235 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
236
237         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
238         length.
239
240         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
241         regs [ARMREG_FP] instead.
242
243         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
244
245         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
246         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
247
248         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
249
250         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
251
252         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
253
254         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
255         without IMT_REG defined (ARM).
256
257         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
258         the trampolines.
259
260 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
261
262         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
263
264 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
265
266         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
267         definitions to match their declarations and vice-versa.
268
269 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
270
271         * Makefile.am (common_sources): Add mini-llvm.h.
272
273         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
274
275 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
276
277         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
278         compiling.
279
280 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
281
282         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
283         implemt the option of loading the llvm backend from a module so
284         that we can have a single binary and the bloat from llvm is
285         only experienced when it is actually loaded.
286
287 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
288
289         * mini-llvm.c: remove direct access to mono_defaults.
290
291 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
292
293         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
294         a no-op.
295
296         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
297
298         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
299         is now mono_arch_nullify_class_init_trampoline ().
300         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
301         opcodes, they are no longer needed.
302
303         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
304         now mono_arch_nullify_class_init_trampoline ().
305         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
306         opcodes, they are no longer needed.
307
308         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
309         vtable on platforms which support it.
310
311         * driver.c: Print the full LLVM version we are compiled against in --version.
312
313         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
314         a bit better. Decode nesting information to fix eh support for llvm+aot.
315
316         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
317         methods.
318
319         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
320
321         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
322         is always passed as the first argument, before the vtype ret arg. This simplifies
323         get_this_arg_reg () and LLVM integration.
324
325 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
326
327         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
328         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
329         most of the vcall specific code to mono_vcall_trampoline () from
330         common_call_trampoline ().
331
332 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
333
334         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
335         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
336         if the callsite is patched.
337
338         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
339         the llvm branch.
340
341         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
342         the trampoline in the xdebug info.
343
344         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
345         as well.
346
347 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
348
349         * mini-llvm.c: Fix a few problems exposed by make check.
350
351 2010-06-25  Mark Probst  <mark.probst@gmail.com>
352
353         * mini-trampolines.c (common_call_trampoline): An ugly hack to
354         work around a potentially very hard to fix problem with inflating
355         generic methods.
356
357 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
358
359         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
360         problem has been fixes.
361
362 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
363
364         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
365
366         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
367         It might be be better to define a MonoGCJitOptions structure later and have the
368         GC return that.
369
370         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
371
372         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
373
374         * debugger-agent.c (get_objref): Implement support for sgen.
375
376         * driver.c: Remove the unused gc_wrapper.h include.
377
378         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
379         implementation.
380
381 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
382
383         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
384
385         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
386         in MonoCompile.
387
388         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
389         instead.
390
391 2010-06-23  Miguel de Icaza  <miguel@novell.com>
392
393         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
394         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
395
396         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
397         it only for Boehm diagnostics.
398
399         * Makefile.am: Make the file a bit more consistent.
400
401         * debug-debugger.c: Wrap the entire file with an #ifdef
402         MONO_DEBUGGER_SUPPORTED to simplify the build.
403
404         * Makefile.am: Fix the opcodes build issue by including the
405         source, not by including the .lo file directly
406
407         Always bring the MDB sources into the build, to drop the
408         dependency on the AM_CONDITIONAL from configure.in as the hard
409         debugger supports Boehm, but not Sgen, this simplifies the build. 
410
411         * Renamed the *.s files into *.S
412
413 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
414
415         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
416         wb for now on 64bits systems while issues with valuetype returns
417         are not fixed.
418
419 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
420
421         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
422         passes by calling createStandardFunctionPasses ().
423
424 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
425
426         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
427
428 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
429
430         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
431         MONO_INST_FAULT.
432
433         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
434         allow better optimization if the OP_LDADDR which caused the flag to be set was
435         optimized away.
436
437         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
438
439         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
440         the type token.
441
442         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
443
444         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
445
446 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
447
448         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
449         to handle the code sequence generated for non-near calls. Fixes #616056.
450
451 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
452
453         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
454
455         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
456
457         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
458         nesting clause too.
459         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
460         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
461         trampoline which saves the context, so changes made to callee saved registers in
462         finally clauses are visible to a nesting catch clause.
463
464         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
465
466         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
467         in LLVM compiled code.
468         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
469         the finally handler has ran.
470
471         * mini.h (ResumeState): New structure containing information required to resume
472         exception handling after executing LLVM compiled finally clauses.
473
474         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
475         bit, by passing all the registers as one argument.
476
477 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
478
479         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
480         to avoid an assert.
481
482 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
483
484         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
485
486         * aot-compiler.c aot-runtime.c: Fix LLVM support.
487
488         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
489         pad, branch to a new bblock instead.
490
491         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
492         orig_method.
493
494         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
495
496         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
497
498 2010-06-17  Geoff Norton  <gnorton@novell.com>
499
500         * mini-arm.h:
501         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
502         can be used by sgen.
503
504 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
505
506         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
507
508         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
509         fails.
510
511         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
512         the ip done by throw_exception (), it is not needed for corlib exceptions.
513
514 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
515
516         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
517         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
518         of size > 5 words. This support fast barriers for value types up to
519         256/512 bytes which     beyond that the copying itself is the major issue.
520
521         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
522         for gsharing, so use it.
523
524         This eliminate all calls to mono_value_copy from managed code in
525         gmcs, fsharp and ipy.
526
527         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
528
529         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
530         performance kept
531
532         * mini.c (mini_init): Register new icall.
533
534 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
535
536         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
537         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
538
539 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
540
541         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
542         value types as the overhead is huge. Manually expand it up to 5 words to
543         avoid code bloat.
544
545         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
546         is an exception that performance is dominated by mono_value_copy.
547
548         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
549
550 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
551
552         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
553         trampolines on x86, since those have their own cconv.
554
555         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
556         exception trampolines.
557
558         * tramp-x86.c: Add xdebug info for a few trampolines.
559
560         * mini-llvm.c: Set the name of the arguments.
561
562         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
563         using a block address if using the LLVM mono branch.
564
565         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
566         trampolines.
567
568 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
569
570         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
571
572         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
573
574         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
575
576         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
577
578         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
579         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
580         to identify the vtable slot address plus the method which needs to be compiled.
581
582         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
583         using llvm.
584
585         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
586         'this' is always passed as the first argument, before the vtype ret arg. This
587         simplifies get_this_arg_reg () and LLVM integration.
588
589         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
590         the latest changes.
591
592         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
593         these trampolines.
594
595         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
596
597         * mini-llvm.c: Fix compilation with llvm 2.6.
598
599         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
600
601         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
602         defined.
603
604         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
605         is always passed as the first argument, before the vtype ret arg. This simplifies
606         get_this_arg_reg () and LLVM integration.
607
608 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
609
610         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
611
612         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
613         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
614         translate into much nicer code.
615
616 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
617
618         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
619         parameter index information. Use this to simplify a lot of code.
620
621         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
622
623 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
624
625         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
626         to fix infinite generic recursion. Fixes #612702.
627
628 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
629
630         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
631         imt trampoline per imt slot when using LLVM.
632
633 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
634
635         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
636
637 2010-06-09  Levi Bard  <levi@unity3d.com>
638
639         * debugger-agent.c: Clear unloaded types on appdomain unload.
640
641 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
642
643         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
644         Fixes #612206.
645
646         * exceptions.cs: Add a test.
647
648 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
649
650         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
651
652         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
653
654         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
655         so it doesn't have to do it.
656
657         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
658         process does not mix with ours.
659
660         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
661         ones.
662
663         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
664         loads/stores which can throw exceptions inside clauses.
665
666 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
667
668         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
669         one ENDFINALLY.
670
671         * mini.c (mini_init): Register mono_resume_unwind as an icall.
672
673 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
674
675         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
676
677         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
678         locals.
679
680 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
681
682         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
683         appdomain.
684
685 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
686
687         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
688         Use a separate generic class init trampoline for llvm, since it needs a different
689         signature.
690
691         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
692         includes the location of this/rgctx.
693
694         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
695         branch.
696
697 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
698
699         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
700
701         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
702         clause.
703
704 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
705
706         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
707         says so.
708
709         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
710
711         * aot-compiler.c (patch_to_string): New debugging helper function.
712
713 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
714
715         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
716         trampoline.
717
718         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
719
720         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
721
722         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
723
724         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
725         clauses.
726
727         * mini.c (create_jit_info): Print EH clause info for LLVM too.
728
729 2010-05-28  Mark Probst  <mark.probst@gmail.com>
730
731         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
732         cpobj with reference types.
733
734 2010-05-28  Mark Probst  <mark.probst@gmail.com>
735
736         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
737         write barrier for reference types.
738
739 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
740
741         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
742         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
743
744 2010-05-31  Martin Baulig  <martin@ximian.com>
745
746         Fix #608271.
747
748         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
749         clear_breakpoint() on all breakpoint events and remove them from the list.
750
751 2010-05-27  Martin Baulig  <martin@ximian.com>
752
753         Fix #605698.
754
755         * debugger-agent.c (method_commands, type_commands): Temporarily
756         set the appdomain while executing this method; do all metadata
757         calls in the debuggee's appdomain where user assemblies are loaded.
758
759 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
760
761         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
762
763 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
764
765         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
766
767 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
768
769         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
770         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
771         be referenced even after the header is freed.
772
773         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
774         section.
775
776 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
777
778 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
779
780         * genmdesc.c (main): Fixing the detection of the nacl switch.
781
782         Code is contributed under MIT/X11 license.
783
784 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
785
786         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
787
788         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
789
790         * mini.h (LLVM_CHECK_VERSION): New helper macro.
791
792 2010-05-25  Miguel de Icaza  <miguel@novell.com>
793
794         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
795         the Perl program
796
797         * genmdesc.c: Added support for nacl: key on the machine
798         description files to support the extra space required by Google
799         Native Client.
800
801 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
802
803         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
804
805 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
806
807         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
808         mono_runtime_class_init_full ().
809         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
810
811 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
812
813         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
814
815 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
816
817         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
818         two are not the same on ilp32.
819
820 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
821
822         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
823         added by mistake.
824
825         * mini-ppc.c: Fix the DISABLE_JIT build.
826
827 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
828
829         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
830         (make_writable): Remove this unused function.
831
832 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
833
834         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
835         structure. Make the labels to plt entries local symbols instead of assembler local
836         labels, since tha latter causes problems for the iphone linker.
837
838 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
839
840         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
841
842 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
843
844         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
845         (ppc_patch_full): Ditto.
846
847         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
848
849         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
850         if gshared is enabled, to avoid asserts in the trampoline code.
851
852         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
853         on ia64.
854
855 2010-05-15  Geoff Norton  <gnorton@novell.com>
856
857         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
858         xdebug mode.
859
860 2010-05-14  Geoff Norton  <gnorton@novell.com>
861
862         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
863         misaligned stack on darwin.
864
865 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
866
867         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
868         arm.
869
870 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
871
872         * xdebug.c: Fix ARM support.
873
874 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
875
876         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
877         and do most of the work on the normal stack.
878         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
879
880 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
881
882         * aot-compiler.c: Put non-code data into the .rodata section on linux.
883
884 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
885
886         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
887
888 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
889
890         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
891         and do most of the work on the normal stack.
892
893 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
894
895         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
896         and do most of the work on the normal stack even if sigaltstack is disabled.
897
898 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
899
900         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
901         UCONTEXT_REG_ constants are available on linux as well.
902         (mono_arch_monoctx_to_sigctx): Ditto.
903         (mono_arch_ip_from_context): Ditto.
904
905 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
906
907         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
908         other domains.
909
910 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
911
912         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
913         no longer needed.
914
915 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
916
917         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
918         if a breakpoint cannot be inserted.
919
920 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
921
922         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
923
924 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
925
926         * debugger-agent.c (frame_commands): Return an error instead of asserting if
927         no JIT info is found for the method.
928
929 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
930
931         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
932         in debug printf.
933
934 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
935
936         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
937         a list of arch specific trampolines.
938
939         * aot-compiler.c (emit_trampolines): Use it.
940
941 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
942
943         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
944         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
945         get rid of the _full from their name.
946
947 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
948
949         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
950         get_nullified_class_init_trampoline to remove some code duplication.
951
952 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
953
954         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
955         attach.
956
957 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
958
959         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
960
961         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
962
963         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
964         there is no need to jump through the first plt entry.
965
966         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
967
968         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
969         arch-specific function.
970         (mono_aot_get_plt_info_offset): Ditto.
971
972         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
973         mono_arch_init () to register jit icalls called from full-aot trampolines.
974         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
975         to mini-<ARCH>.c.
976
977         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
978         the specialized throw corlib exception trampoline, use a variant of the normal
979         trampoline along with a new C function which does the call to
980         mono_exception_from_token (), just like on x86.
981
982 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
983
984         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
985         Reorganize the full aot trampoline creation functions, instead of taking a bunch
986         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
987         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
988         creation functions on architectures which have the full-aot ones.
989
990 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
991
992         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
993
994 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
995
996         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
997         explicitly, this seems to be required by some gcc versions at -O2.
998
999         * mini-arm.c: Ditto.
1000
1001 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
1002
1003         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
1004         has_target delegate invokes.
1005
1006 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
1007
1008         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
1009         info fields.
1010
1011         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
1012         add patches/unwind info arguments, move to mini.c.
1013
1014         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
1015
1016 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
1017
1018         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
1019         command which returns full path names.
1020
1021 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1022
1023         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
1024         code_size output variable.
1025
1026         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
1027         mono_get_lmf_addr.
1028         
1029 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1030
1031         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
1032         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
1033         (mono_arch_cpu_enumerate_simd_versions): Ditto.
1034
1035 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1036
1037         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
1038         apple assembler.
1039
1040 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1041
1042         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
1043
1044 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1045
1046         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
1047
1048 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
1049
1050         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
1051
1052 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1053
1054         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
1055         line number support works with eglib.
1056
1057 2010-04-27  Miguel de Icaza  <miguel@novell.com>
1058
1059         * driver.c, mini.c: Since linking with LLVM makes the default Mono
1060         dirty an extra 70kb pages on startup we are now going to choose a
1061         different strategy: ship mono and mono-llvm binaries, with the
1062         second being the one that links with LLVM and defaults to LLVM
1063         being enabled.
1064
1065 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1066
1067         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
1068         Implement full-aot support on x86.
1069
1070         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
1071         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
1072         the first register returned by get_global_int_regs ().
1073
1074         * cpu-x86.md: Fix the length of insertx_u1_slow.
1075
1076         * iltests.il.in: Disable tail call tests when running with full-aot.
1077
1078 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
1079
1080         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
1081
1082 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1083
1084         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
1085         in the initializer, because it's non-constant.
1086
1087 2010-04-23  Miguel de Icaza  <miguel@novell.com>
1088
1089         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
1090         of LLVM on by default.   Used for buildbots and other setups.
1091
1092 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
1093
1094         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
1095
1096 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
1097
1098         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
1099         initonly static fields when using moving GC.
1100
1101         Contributed under MIT/X11 license.
1102
1103 2010-04-23  Geoff Norton  <gnorton@novell.com>
1104
1105         * mini-amd64.h: Darwin x86_64 support.
1106
1107 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
1108
1109         * exceptions-arm.c: Remove platform checks in favor of configure checks.
1110
1111 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
1112
1113         * exceptions-arm.c: Add Android support for sigcontext structure.
1114
1115 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1116
1117         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
1118         wrappers correctly now that their wrapper info is NULL.
1119
1120 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1121
1122         * mini.c (mono_jit_compile_method_inner): Avoid calling
1123         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
1124
1125 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1126
1127         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
1128         so the latter can be #ifndef DISABLE_JIT-ed.
1129
1130         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
1131
1132 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1133
1134         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
1135
1136 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1137
1138         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
1139         stack.
1140
1141 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
1142
1143         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
1144         calling mono_class_num_methods (). Fixes #592244.
1145
1146 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1147
1148         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
1149
1150         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
1151
1152 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1153
1154         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
1155         version.
1156         * (handle_alloc): Ditto.
1157         (mono_method_to_ir): Remove the constrained call restriction added by a previous
1158         change, its not needed anymore.
1159
1160 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
1161
1162         * mini-posix.c (sigusr1_signal_handler): Fix build on
1163         non x86/amd64 systems.
1164
1165 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1166
1167         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
1168         calls where the constrained class needs a context. Fixes #595863.
1169
1170         * iltests.il.in: Add a test.
1171
1172 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1173
1174         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
1175         2.6/SVN seems to have broken support for them.
1176
1177 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1178
1179         * mini-llvm.c: Fix support for LLVM 2.6.
1180
1181 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
1182
1183         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
1184         MonoInternalThread belonging to the thread.
1185
1186 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
1187
1188         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
1189         unsafe optimization that will remove bound checks.
1190
1191 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
1192
1193         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
1194         CompareExchange not to be inlined for I8.
1195
1196         Contributed under MIT/X11 license.
1197
1198 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1199
1200         * array.cs: Add tests for cast between primitive array types.
1201
1202 2010-04-07 Andreia Gaita  <avidigal@novell.com>
1203
1204         * Makefile.am: create a convenience library for moon to link with
1205
1206 2010-04-07 Paolo Molaro <lupus@ximian.com>
1207
1208         * method-to-ir.c: optimize array accesses from generic interfaces.
1209
1210 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1211
1212         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1213
1214 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1215
1216         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1217         of marshalbyref classes.
1218
1219         Fixes #515884.
1220
1221 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1222
1223         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1224         information.
1225
1226         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1227         information.
1228
1229         * mini.h: Increase AOT version.
1230
1231 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1232
1233         * mini-x86.h: Only enable soft debugger when using sigaction or on
1234         Windows. Fixes build on Haiku (lacks siginfo_t).
1235
1236         Code is contributed under MIT/X11 license.
1237
1238 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1239
1240         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1241         BeOS-style signal handlers.
1242
1243         Code is contributed under MIT/X11 license.
1244         
1245 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1246
1247         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1248
1249 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1250
1251         * mini-exceptions.c: Fix win32 build.
1252
1253 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1254
1255         * mini.c, driver.c: Call mono_gc_base_init() before
1256         mono_debug_init().
1257
1258 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1259
1260         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1261         call_method]): Delegate the actual work in security-core-clr.c
1262         to ease code sharing.
1263
1264 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1265
1266         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1267         float conv.ovf.un opcodes are encountered, instead of asserting later.
1268         Fixes #566296.
1269
1270 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1271
1272         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1273
1274         * iltests.il.in: Add a test.
1275
1276 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1277
1278         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1279         large. Fixes #567040.
1280
1281         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1282
1283 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1284
1285         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1286         #592711.
1287
1288 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1289
1290         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1291         mono_create_handler_block_trampoline with the proper #ifdef so that it
1292         compiles on amd64.
1293
1294 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1295
1296         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1297         allows to select if it's new or old context that is passed to 
1298         the callback.
1299
1300         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1301         case when executing a guarded handler from the EH machinery.
1302
1303         * mini-exceptions.c (mono_install_handler_block_guard): New function
1304         responsible for checking for handler blocks, installing the guard and
1305         clearing abort state.
1306
1307         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1308         to check for handler blocks and skip interruption logic if one was found.
1309
1310         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1311         by the handler block guard trampoline. Resumes interruption by raising the
1312         pending ThreadAbortException.
1313
1314         * mini.c (create_jit_info): Calculate the end address of a finally block.
1315
1316         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1317         of a finally block to a specified address and return the old one.
1318
1319         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1320         trampoline patches the original return address and calls the trampoline function.
1321
1322 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1323
1324         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1325
1326         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1327         does the patching if the callee is in the same domain.
1328
1329         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1330         of mono_arch_patch_plt_entry ().
1331
1332 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1333
1334         * mini.c (create_jit_info): Fix try block hole length encoding.
1335
1336 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1337
1338         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1339         duplicate information and print offsets instead of absolute addresses.
1340
1341 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1342
1343         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1344         event is sent. Fixes #591733.
1345
1346 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1347
1348         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1349         OpenBSD.
1350
1351 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1352
1353         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1354         thread_to_tls hash table.
1355
1356         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1357         section. Fixes #591000.
1358
1359 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1360
1361         * Makefile.am (version.h): Check for pure .git directory only,
1362         fixes SVN revision when using git without git-svn.
1363
1364         Contributed under MIT/X11 license.
1365
1366 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1367
1368         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1369
1370 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1371
1372         * basic-simd.cs: Test for vector x scalar binary operators.
1373
1374 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1375
1376         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1377         intrinsics with expanded scalar arguments.
1378
1379 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1380
1381         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1382         don't have an exception class, so don't decode it. This would crash
1383         with filter clauses.
1384
1385 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1386
1387         Make sure that trunk builds with DISABLE_JIT, an update to the
1388         PlayStation 3 port.
1389         
1390         * mini.c (mini_get_shared_method): this code seems to be necessary
1391         regardless of whether DISABLE_JIT has been defined.
1392
1393         (mono_jit_compile_method_inner): it seems that this method is
1394         required even in full AOT mode, so ifdef out only the pieces that
1395         try to genrate code (the body of code that applies patches to the
1396         code).  
1397
1398         (mini_method_compile): do not compile when using DISABLE_JIT.
1399
1400         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1401         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1402         compile when DISABLE_JIT is set.
1403
1404 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1405
1406         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1407         arch really supports it.
1408
1409 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1410
1411         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1412
1413 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1414
1415         * exceptions-s390x.c: Add support for
1416         mono_arch_get_throw_corlib_exception and fix throw by name.
1417
1418         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1419         logic (especially for varargs); Correct localloc sizing; Add
1420         mono_arch_get_this_arg_from_call and
1421         mono_arch_get_this_arg_from_call.
1422
1423         * mini-s390x.h: Add support for facility list extraction;
1424         Correct/update MONO_ARCH_xxx settings.
1425
1426         * mini-s390.c: Minor corrections to instruction output for
1427         varargs. No IMT implementation - I think it's time to deprecate
1428         s390 and just leave s390x.
1429
1430         * tramp-s390x.c: Correct creation of trampoline instruction
1431
1432
1433         * cpu-s390x.md: Update some instruction lengths
1434
1435 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1436
1437         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1438         can be hit with partial sharing.
1439
1440         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1441         in non-shared classes correctly.
1442         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1443         Turn on partial sharing.
1444
1445 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1446
1447         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1448         by mistake.
1449
1450 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1451
1452         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1453         mono_method_signature ().
1454
1455         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1456
1457         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1458         error checking, so later calls do not need error checking.
1459
1460 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1461
1462         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1463
1464         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1465
1466 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1467
1468         * mini-exceptions.c (mono_handle_exception_internal): Don't
1469         check try_end for archs different than s390. 
1470
1471         * mini.c (create_jit_info): Don't crash if the finallt block is the
1472         last one.
1473
1474 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1475
1476         * driver.c (mono_main): Don't free global codeman under linux since
1477         glic now peeks at code on stack for more archs than just amd64.
1478
1479 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1480
1481         * mini.c, method-to-ir.c: changes to support compressed interface
1482         bitmaps.
1483
1484 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1485
1486         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1487         Use sigaction on OpenBSD too.
1488
1489 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1490
1491         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1492
1493 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1494
1495         * debugger-agent.c: #include sys/select.h for fd_set.
1496
1497         Code is contributed under MIT/X11 license.
1498
1499 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1500
1501         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1502         (openbsd+amd64 ?).
1503
1504 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1505
1506         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1507         some large methods with lots of exception handlers. Fixes #440924.
1508
1509 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1510
1511         * method-to-ir.c: remove code duplication for interface checks.
1512
1513 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1514
1515         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1516         (assembly_unload): Clear all event requests referencing the to-be unloaded
1517         assembly.
1518
1519
1520 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1521
1522         * mini.h, mini-exceptions.c: restore the state of the stack
1523         guard page permissions.
1524
1525 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1526
1527         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1528         call site patching code, it doesn't appear to be needed.
1529
1530 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1531
1532         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1533         sharing generic methods whose type arguments are a mix of reference and
1534         non-reference types. Not yet turned on.
1535
1536         * mini.c (mini_get_shared_method): New helper function to return
1537         the method which will be compiled/registered in the JIT tables when doing
1538         generic sharing.
1539         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1540         use mini_get_shared_method ().
1541
1542         * mini.c (mini_method_compile): Register the same method which is compiled when
1543         doing generic sharing.
1544
1545         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1546
1547         * generics.cs: Add partial sharing tests.
1548
1549 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1550
1551         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1552                    Add an enum value that or's all possable values together. Add an enum value
1553                    that marks the end of the used bit indexes.
1554
1555         * mini-amd64.c : Make changes to match the changes in mini.h 
1556
1557         * mini-x86.c : Make changes to match the changes in mini.h
1558
1559         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1560                    simd_version to support more simd versions. Changed the name of
1561                    simd_version to simd_version_flags to make it more intuitive that
1562                    it now contains bit flags. Reordered the *_intrinsics arrays to
1563                    match the changes above. Changed emit_intrinsics() to use the new
1564                    setup mentioned above.
1565
1566         Code is contributed under MIT/X11 license.
1567
1568 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1569
1570         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1571         remaining archs. Alpha and hppa maintainers, please stand up.
1572
1573 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1574
1575         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1576         is needed even when fail_tramp!=NULL.
1577
1578 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1579
1580         * debugger-agent.c (insert_breakpoint): Write a log message.
1581
1582 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1583
1584         * iltests.il.in: Add a few tests for LEAVE going over multiple
1585         finally clauses.
1586
1587 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1588
1589          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1590
1591 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1592
1593         * mini.h (MonoBasicBlock): Add native_length field.
1594         * mini.h (MonoCompile): Add try_block_holes field.
1595         * mini.h (MonoInst): Add exception_clause pointer to
1596         the data union.
1597
1598         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1599         * mini.c (mono_cfg_add_try_hole): New function to register possible
1600         holes in try blocks.
1601         * mini.c (create_jit_info): Fill in the holes information.
1602
1603         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1604         by a try block.
1605
1606         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1607
1608 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1609
1610         * jit-icalls.c: adjusted for the array API changes.
1611
1612 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1613
1614         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1615
1616 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1617
1618         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1619         the 'pending' flag. This fixes support for appdomains too.
1620
1621
1622 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1623
1624         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1625
1626 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1627
1628         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1629         when using LLVM, LLVM generates it itself when needed.
1630
1631         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1632
1633         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1634         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1635         OP_ANDNPS/OP_ANDNPD.
1636
1637 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1638
1639         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1640         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1641         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1642
1643 2010-03-11  Martin Baulig  <martin@ximian.com>
1644
1645         * debugger-agent.c (type_commands): Add NULL check to
1646         `CMD_TYPE_GET_SOURCE_FILES'.
1647
1648 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1649
1650         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1651
1652 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1653
1654         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1655         #586664.
1656
1657         * iltests.il.in: Add a test.
1658
1659 2010-03-05  Martin Baulig  <martin@ximian.com>
1660
1661         Add support for aborting invocations.
1662
1663         * debugger-agent.c
1664         (InvokeData): Added `InvokeData *last_invoke'.
1665         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1666         added a new `invoke' field to keep the `InvokeData *' throughout
1667         the invocation.
1668         (ErrorCode): Added `ERR_NO_INVOCATION'.
1669         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1670         (mono_debugger_agent_handle_exception): Don't report any exception
1671         if an abort was requested.
1672         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1673         a thread abort if necessary.
1674         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1675
1676 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1677
1678         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1679         so we can release the whole list and not just the first one. Free
1680         it in more places as well.
1681
1682 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1683
1684         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1685
1686 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1687
1688         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1689
1690 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1691
1692         * driver.c: report also other misc build options.
1693
1694 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1695
1696         * method-to-ir.c: Generate better code for the NewObject
1697         intrinsic.
1698         
1699 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1700
1701         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1702         is disabled. Fixes #582322.
1703
1704         * iltests.il.in: Add a test.
1705
1706 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1707
1708         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1709         the handling of obj->synchronization == null and owner != current thread to
1710         mono_monitor_exit ().
1711
1712         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1713
1714
1715 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1716
1717         * mini.c: change the way emulated opcode info is stored and save about
1718         4 KB of runtime memory.
1719
1720 2010-03-04  David S. Miller  <davem@davemloft.net>
1721
1722        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1723        that don't provide the siginfo in the second signal handler argument
1724        are buggy, and this has been fixed for years.
1725        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1726        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1727
1728 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1729
1730         * aot-runtime.c (find_symbol): Fix a leak.
1731         (decode_patch): Ditto.
1732
1733 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1734
1735         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1736
1737 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1738
1739         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1740
1741 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1742
1743         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1744
1745 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1746
1747         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1748         to check for errors, it's enough to create the metadata open.
1749
1750         Fixes #562150
1751
1752 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1753
1754         * trace.c|h:
1755         * mini-exceptions.c: Add support for printing stack traces when handling
1756         exceptions, and when printing exceptions thrown while tracing also print
1757         the exception message.
1758
1759 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1760
1761         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1762         since the exclude token is a valid string character.
1763
1764 2010-03-02  Levi Bard  <levi@unity3d.com>
1765
1766         * debugger-agent.c: Invalidate thread stacks on domain unload.
1767
1768 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1769
1770         * method-to-ir.c: Emit dummy_use for stored reference after write
1771         barriers to make sure the object is pinned if the GC interrupts
1772         before the write barrier is done.
1773
1774 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1775
1776         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1777
1778 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1779
1780         * debugger-agent.c: Add a log message printing the protocol version.
1781
1782 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1783
1784         * debugger-agent.c: Add a new command to communicate the protocol version used
1785         by the client. This could be used to allow newer runtimes to communicate with
1786         older clients.
1787
1788 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1789
1790         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1791
1792 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1793
1794         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1795         type.
1796
1797 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1798
1799         * mini-arm.c: make the arm cpu arch configurable with the
1800         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1801         Bug #584198.
1802
1803 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1804
1805         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1806         support for the perf tool on Linux.
1807
1808 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1809
1810         * method-to-ir.c: make string.InsertenalSetChar() specialization
1811         effective.
1812
1813 2010-03-01  Robert Jordan  <robertj@gmx.net>
1814
1815         * Makefile.am: fix the non-static build.
1816
1817 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1818
1819         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1820         here.
1821
1822 2010-02-26  Robert Jordan  <robertj@gmx.net>
1823
1824         * tasklets.c (continuation_store): Return from an error condition
1825         immediately.
1826
1827 2010-02-26  Martin Baulig  <martin@ximian.com>
1828
1829         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1830
1831         * debug-mini.c
1832         (MonoDebuggerThreadInfo): Added `internal_flags'.
1833         (MonoDebuggerInternalThreadFlags): New enum.
1834         (_mono_debugger_throw_exception): Don't signal the debugger if a
1835         type abort was requested.
1836         (_mono_debugger_unhandled_exception): Likewise.
1837         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1838         (mono_debugger_runtime_invoke): If the debugger requested a thread
1839         abort during the invocation, reset it here.
1840
1841 2010-02-26  Martin Baulig  <martin@ximian.com>
1842
1843         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1844         instead of `MonoThread *'.
1845
1846 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1847
1848         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1849         code offsets table, as it is mostly sorted.
1850
1851 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1852
1853         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1854         Fixes #582991.
1855
1856 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1857
1858         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1859
1860 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1861
1862         * Makefile.am: build the new ABI version of the libmono library.
1863         * debugger-agent.c, mini.c: fix warnings with the new API.
1864         * jit.h: don't depend on glib.h being included.
1865
1866 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1867
1868         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1869
1870 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1871
1872         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1873         ThreadStatic variables.
1874
1875 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1876
1877         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1878         data is not freed yet. Fixes #582460.
1879
1880 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1881
1882         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1883         event requests. Bump protocol minor version.
1884
1885 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1886
1887         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1888
1889 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1890
1891         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1892         #581950.
1893
1894         * iltests.il.in: Add a test.
1895
1896 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1897
1898         * mini.c (inline_method): Check for loader errors.
1899
1900 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1901
1902         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1903         instead of mono_method_get_header as it doesn't decode locals
1904         so the called method can have unresolved dependencies that will only
1905         be satisfied after the current method is JIT'd.
1906
1907         Fixes #550968.
1908
1909 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1910
1911         * basic.cs (test_0_div_opt): Speed this up a bit.
1912
1913 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1914
1915         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1916
1917         * mini.c (mono_jit_create_remoting_trampoline): Call
1918         mono_create_specific_trampoline () instead of
1919         mono_arch_create_specific_trampoline ().
1920
1921         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1922
1923 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1924
1925         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1926         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1927
1928         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1929
1930         * mini-amd64.c: Fix DISABLE_JIT support.
1931
1932 2010-02-20  Geoff Norton  <gnorton@novell.com>
1933
1934         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1935
1936 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1937
1938         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1939         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1940         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1941         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1942         handle_exception.
1943
1944 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1945
1946         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1947         edx/ecx too. This is needed to support OP_SEQ_POINT.
1948
1949 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1950
1951         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1952
1953         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1954
1955 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1956
1957         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1958         LLVM+AOT+exceptions, not enabled yet.
1959
1960 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1961
1962         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1963
1964 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1965
1966         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1967         xdebug info for these.
1968
1969         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1970         in a few places.
1971
1972         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1973         not used yet.
1974
1975 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1976
1977         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1978
1979 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1980
1981         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1982         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1983
1984         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1985         for mtouch.
1986
1987 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1988
1989         * debugger-agent.c: handle incomplete reads and EINTR in
1990         recv()/send(). This could have been causing random
1991         disconnections.
1992
1993 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1994
1995         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1996         points.
1997
1998         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1999         so they have small offsets. Fixes #566311.
2000
2001 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
2002
2003         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
2004
2005 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
2006
2007         * mini-amd64.c: Remove the special casing of byref in a few places now that
2008         mini_type_get_underlying_type () handles it.
2009
2010         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
2011         by returning native int. Fixes #577984.
2012
2013 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
2014
2015         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
2016         a macro.
2017
2018         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
2019         of putting the clause itself.
2020
2021         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
2022
2023 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
2024
2025         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
2026         might be unaligned.
2027
2028 2010-02-10  Geoff Norton  <gnorton@novell.com>
2029
2030         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
2031
2032 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2033
2034         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
2035         llvm methods too.
2036
2037         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
2038         it is not an LLVM generated symbol.
2039
2040         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
2041
2042         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
2043         implementation in gshared mode because it causes regressions.
2044
2045         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
2046
2047         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
2048         should be done by the caller.
2049
2050         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
2051
2052         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
2053
2054         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
2055         since mono_jit_info_table_find () doesn't do it anymore.
2056
2057         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
2058         instead of mono_jit_info_table_find ().
2059
2060 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2061
2062         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
2063
2064         * aot-compiler.c (encode_method_ref): Update after the removal of
2065         mono_gc_get_managed_allocator_type ().
2066
2067         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
2068         Fixes #564538.
2069
2070 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
2071
2072         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
2073         generic params as well.
2074         (handle_isinst): Ditto.
2075
2076         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
2077         instead of always calling an icall.
2078
2079         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
2080         computing the size of the got.
2081
2082         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
2083         when using LLVM. Instead of emitting it as an LLVM method, emit it using
2084         the assembly directive '.set' so it points to the first LLVM emitted method.
2085
2086 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2087
2088         * mini.c (mini_method_verify): Report the method which failed to verify.
2089
2090 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2091
2092         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
2093         to avoid JIT'ng dead basic blocks. This is the same behavior as the
2094         runtime MS verifier.
2095
2096 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2097
2098         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
2099         #561962.
2100
2101 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2102
2103         * mini-llvm.c: Init the jit module only when first JITting.
2104
2105         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
2106
2107         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
2108
2109         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
2110         replaced with the real got.
2111
2112         * debugger-agent.c (type_commands): Return the enumness if the type as well.
2113
2114         * image-writer.c: Reduce the amount of #ifdefs a bit.
2115
2116         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
2117         llvm on darwin/arm.
2118
2119         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
2120
2121         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
2122         global.
2123
2124 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2125
2126         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
2127         (mono_llvm_emit_method): Fix unaligned stores too.
2128
2129         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
2130         so async stack walks don't crash.
2131
2132 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2133
2134         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
2135         was not patched if the callee needed an rgctx trampoline.
2136
2137 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2138
2139         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
2140         vtable address in AOT code.
2141
2142 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2143
2144         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
2145         MonoInst's.
2146
2147 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
2148
2149         * genmdesc.pl: remove dependency on external cpp.
2150
2151 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2152
2153         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
2154         using LLVM, its not needed, and abcrem can't handle it.
2155
2156 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
2157
2158         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
2159         it easier to group instructions and reduce duplication.
2160
2161 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2162
2163         * decompose.c: Move the array/soft float decompose routines here from
2164         method-to-ir.c.
2165
2166         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
2167
2168 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
2169
2170         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
2171         to tell LLVM that the got is constant, not used yet.
2172
2173         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
2174
2175 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2176
2177         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
2178         managed wrappers.
2179
2180 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2181
2182         * aot-compiler.c (add_wrappers): Commit the hack which generates
2183         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
2184         custom attribute.
2185
2186 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2187
2188         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
2189         a fault, only used by the LLVM backend.
2190
2191         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
2192         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
2193
2194         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
2195         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
2196
2197         * mini-llvm.c: Only generate volatile loads from load instructions which have
2198         the MONO_INST_FAULT flag set.
2199
2200 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2201
2202         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
2203         64 bit platforms.
2204
2205 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2206
2207         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
2208         sequence points. Fixes #571236.
2209
2210 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2211
2212         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2213         end of the appdomain unload process, after assemblies have been unloaded.
2214         Fixes #574842.
2215
2216 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2217
2218         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2219         works.
2220
2221         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2222         Fixes #573988.
2223
2224 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2225
2226         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2227
2228 2010-01-26  Geoff Norton  <gnorton@novell.com>
2229
2230         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2231         with struct marshalability.
2232
2233 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2234
2235         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2236         it supports class names as well.
2237
2238         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2239         needed by the GC map code.
2240
2241         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2242         flags if needed.
2243
2244         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2245         if cfg->init_ref_vars is set.
2246
2247         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2248         cfg->disable_initlocals_op_refs is set.
2249
2250         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2251         using liveness info if cfg->compute_precise_live_ranges is set.
2252
2253         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2254         volatile variables correctly. Add comments about the live ranges. Not enabled
2255         yet.
2256
2257 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2258
2259         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2260         0x2a into them in method prologs.
2261
2262         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2263
2264 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2265
2266         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2267         classes, since llvm is compiled with -fno-rtti.
2268
2269         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2270
2271         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2272         llvm does not require it.
2273
2274         * aot-runtime.c (load_method): Print the full name of the last aot method.
2275
2276 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2277
2278         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2279         thread has not fully started yet.
2280
2281 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2282
2283         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2284
2285 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2286
2287         * driver.c: Do not abort if LLVM is not supported, print a
2288         warning and add the information to the Mono JIT information.
2289
2290 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2291
2292         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2293         using explicit null checks.
2294
2295 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2296
2297         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2298         related code.
2299
2300         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2301         () in one place.
2302         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2303         its no longer needed.
2304
2305         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2306
2307         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2308         define for platforms still using it (s390). Get rid of the
2309         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2310
2311         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2312         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2313
2314         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2315         the caller pushed the arguments.
2316
2317         * mini-llvm.c: Enable throwing exceptions on x86.
2318
2319         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2320         "Thread (nil) may have been prematurely finalized" messages if this is called
2321         on a thread not registered with the runtime.
2322
2323         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2324
2325 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2326
2327         * jit-icalls.c (mono_array_new_3): New jit icall.
2328
2329         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2330
2331         * arrays.cs: Add a test for 3 dimensional arrays.
2332
2333 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2334
2335         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2336         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2337         used.
2338
2339         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2340         thrown on x86.
2341
2342         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2343
2344         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2345
2346         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2347
2348 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2349
2350         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2351           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2352
2353         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2354
2355         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2356
2357         Code is contributed under MIT/X11 license.
2358
2359 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2360
2361         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2362
2363         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2364
2365         * mini.c (mini_method_compile): Set the new flag when running under the
2366         debugger.
2367
2368 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2369
2370         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2371         a ref/noref value + a global pin flag, so parts of stack frames can still be
2372         precisely marked even if they include stuff which needs pinning. Improve logging.
2373         Fix many bugs. Not enabled yet.
2374
2375         * gc-test.cs: Add a few tests.
2376
2377         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2378         the normal -v options. Avoid propagating liveness information through bblocks
2379         which end with a NOT_REACHED opcode.
2380
2381         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2382         after cfg has been freed.
2383
2384 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2385
2386         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2387         if a clause is skipped because it uses the exception object, since it could
2388         have caught the exception.
2389
2390         * exceptions.cs: Add a test.
2391
2392 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2393
2394        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2395
2396         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2397         ICollection<T> wrappers.
2398
2399 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2400
2401         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2402
2403 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2404
2405         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2406         NOMAP32BIT or optimize_for_xen is set.
2407
2408 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2409
2410         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2411         mono_metadata_str_hash () instead.
2412
2413 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2414
2415         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2416         sizeof (void*).
2417
2418         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2419
2420 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2421
2422         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2423         flag is set.
2424
2425         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2426         throwing code correctly.
2427
2428         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2429
2430 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2431
2432         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2433         ftnptrs created by us, handle RGCTX_FETCH correctly.
2434         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2435
2436         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2437         ftnptr added by mono_aot_get_named_code ().
2438
2439 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2440
2441         * mini-arm.c: Fix a few LLVM problems.
2442
2443         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2444
2445 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2446
2447         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2448         AOT compiling.
2449
2450 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2451
2452         * jit.h, method-to-ir.c: added ability to set the policy for
2453         inserting breakpoints from the break IL instruction or the
2454         Debugger.Break () API call.
2455
2456 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2457
2458         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2459         assemblies need to be eagerly loaded.
2460
2461 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2462
2463         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2464
2465 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2466
2467         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2468         an argument which matches any exception.
2469
2470 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2471
2472         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2473         optimization if the called method is gshared and marshalbyref, since gshared
2474         methods can' have wrappers. Fixes #569390.
2475
2476         * generics.cs: Add a test.
2477
2478 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2479
2480         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2481         callable from gdb.
2482
2483 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2484
2485         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2486
2487 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2488
2489         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2490         since it is not supported in win2000.
2491
2492 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2493
2494         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2495         error if loading an assembly fails.
2496         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2497
2498         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2499         if exists.
2500
2501         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2502         compiled methods.
2503
2504         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2505
2506         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2507         is not supported yet.
2508
2509         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2510
2511 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2512
2513         * method-to-ir.c: All types with variant arguments must fallback to the
2514         slow path. This makes cast of variant delegates work.
2515
2516         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2517         argument that is set to TRUE is the returned vtable slot is for a variant
2518         interface. Changed a g_print + g_assert_not_reached to a g_error.
2519
2520         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2521         a similar fashion of generic virtual methods.
2522
2523 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2524
2525         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2526         when cfg is null.
2527
2528         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2529         method using a variance aware function.
2530
2531         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2532
2533 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2534
2535         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2536         do an icall for now.
2537
2538 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2539
2540         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2541         If LLVM decides to set the code model to Large, reset it to Default.
2542
2543 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2544
2545         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2546         stripped binaries as well.
2547
2548 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2549
2550         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2551         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2552
2553         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2554         reg.
2555
2556 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2557
2558         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2559         separate function.
2560
2561         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2562         as the type info to llvm.eh.selector.
2563         (exception_cb): Use the type info for filling out some fields of
2564         MonoJitExceptionInfo like the flags and the exception class. This is needed
2565         because the LLVM produced exception handling clauses might not match the original
2566         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2567
2568         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2569         separate function. Add an extra argument which returns the type infos
2570         corresponding to the exception clauses.
2571
2572         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2573         exception handling clauses.
2574
2575 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2576
2577         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2578         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2579         to fix an AOT case.
2580
2581 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2582
2583         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2584         internal assembly.
2585
2586 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2587
2588         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2589         llvm code.
2590
2591 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2592
2593         * mini.c (mini_method_compile): Verify the method before calling
2594         mono_compile_create_vars as this might crash since it uses method
2595         information.
2596
2597         Fixes #560196.
2598
2599 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2600
2601         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2602         one case if AOTing, since the class might not be a concrete class.
2603
2604 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2605
2606         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2607         functions which are now defined in mempool-internals.h.
2608
2609         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2610
2611         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2612
2613 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2614
2615         * mini.c:
2616         * method-to.ir.c:
2617         * mini-*.c: Properly handle generic enums.
2618
2619         Fixes #566294
2620
2621 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2622
2623         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2624         in a few more places.
2625
2626 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2627
2628         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2629         nullable parameters. Fixes #567351.
2630
2631 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2632
2633         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2634
2635 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2636
2637         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2638         mono_get_generic_context_from_code () call.
2639
2640         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2641
2642 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2643
2644         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2645         needed.
2646
2647 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2648
2649         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2650         mono_method_get_signature returns NULL. Fix #567084
2651
2652 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2653
2654         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2655         instead of once for each module.
2656
2657 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2658
2659         * debugger-agent.c (ss_start): Implement step over for the last sequence
2660         point in methods.
2661
2662         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2663         have the STEP_LOC flag set.
2664
2665         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2666         fails. Fixes #566689.
2667
2668 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2669
2670         * mini.c (mono_add_seq_point): New helper function.
2671         (mono_save_seq_point_info): New function to save sequence point info, extracted
2672         from mini_method_compile ().
2673
2674         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2675
2676         * mini.h (MonoSeqPointInfo): New structure containing information about
2677         the sequence points of a JITted method.
2678         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2679         'bucket' field.
2680
2681         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2682         point information is stored, use a MonoSeqPointInfo structure instead of a
2683         GPtrArray. For each seq point, compute a list of successor seq points.
2684
2685         * debugger-agent.c: Use the successor list to implement step-over more
2686         efficiently: instead of single stepping until a different line/IL offset is
2687         reached, place breakpoints into all successor seq points.
2688
2689         * mini.h: Bump AOT file format version.
2690
2691 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2692
2693         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2694
2695         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2696
2697 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2698
2699         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2700         build.
2701
2702 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2703
2704         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2705         alloca as g_malloc is not signal safe.
2706
2707 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2708
2709         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2710         VALGRIND_DISCARD_TRANSLATIONS.
2711
2712         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2713         checks, they are no longer needed.
2714
2715         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2716         a function into a sigctx which can handle function pointers.
2717
2718         * mini-ppc.c: Implement soft debugger support on ppc64.
2719
2720         * mini-ppc.c: Implement soft debugger support.
2721
2722 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2723
2724         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2725
2726 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2727
2728         * mini.c (mono_get_runtime_build_info): include Mono version in
2729         the returned value.
2730
2731         * driver.c (mono_main): VERSION is now included in the string
2732         returned from mono_get_runtime_build_info()
2733
2734 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2735
2736         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2737         signatures. Fixes #565143.
2738
2739         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2740
2741 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2742
2743         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2744
2745 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2746
2747         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2748         making max stack 10x smaller.
2749
2750 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2751
2752         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2753
2754 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2755
2756         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2757
2758 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2759
2760         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2761         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2762
2763         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2764
2765         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2766
2767         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2768
2769         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2770         the compilation.
2771
2772 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2773
2774         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2775         raise an invalid program exception.   
2776
2777         For other opcodes that we might not handle use a g_warning and
2778         raise the exception.   Beats termination.
2779
2780         Fixes #561724
2781
2782 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2783
2784         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2785
2786         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2787         by merging the LLVM and !MAP_32BIT cases.
2788
2789 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2790
2791         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2792         sigctx being passed in, as we have no CONTEXT available in the APC.
2793
2794         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2795         for now.
2796
2797         Code contributed under MIT/X11 license.
2798
2799 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2800
2801         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2802         in the LLVM backend on AMD64.
2803
2804         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2805         FDE.
2806
2807         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2808
2809         * mini-llvm.c: Export mono_personality for AOT.
2810
2811         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2812
2813         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2814         implicit exception can occur.
2815
2816         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2817         OP_IMPLICIT_EXCEPTION instruction.
2818
2819         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2820
2821         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2822
2823         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2824         inside a protected block.
2825
2826         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2827         trampolines doesn't include the argument.
2828
2829         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2830         trampolines on amd64.
2831
2832         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2833         of RDI.
2834
2835         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2836         disabled for methods with clauses.
2837
2838         * mini-llvm.c: Enable support for catch clauses.
2839
2840         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2841         end of an LLVM compiled finally clause.
2842         (mono_handle_exception_internal): Save the exception handling state in TLS
2843         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2844         resume unwinding from that point.
2845
2846         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2847         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2848         to obtain the addresses of the exception handling regions.
2849
2850         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2851         finally clauses are supported.
2852
2853         * mini.c (mini_method_compile): Add support for LLVM code with exception
2854         handlers.
2855
2856 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2857
2858         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2859         proper size.
2860
2861 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2862
2863         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2864         as a primitive type.
2865
2866 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2867
2868         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2869         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2870         #564000.
2871
2872 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2873
2874         * method-to-ir.c (mini_redirect_call): do not redirect the
2875         InternalAllocateStr internal call if string profiling is enabled.
2876
2877 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2878
2879         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2880         generic methods.
2881
2882         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2883         unwind.h header file.
2884
2885         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2886         newer valgrind versions seems to handle this fine.
2887
2888 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2889
2890         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2891         on the debugger thread.
2892
2893 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2894
2895         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2896
2897         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2898
2899         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2900
2901         * cpu-<ARCH>.md: Make call_handler clob:c.
2902
2903         * mini.c: Reenable SSA for methods with clauses.
2904
2905         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2906         as it causes failures on x86.
2907
2908 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2909
2910         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2911         returns NULL (e.g. a bad assembly).
2912
2913 2009-12-08  Geoff Norton  <gnorton@novell.com>
2914
2915         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2916         stepping out into native code.  There were issues with nested invokes
2917         like .cctors.
2918
2919 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2920
2921         * mini.c (mini_method_compile): Do the disable_llvm checks early
2922         and avoid the LLVM compile pass if the checks fail.
2923
2924         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2925
2926         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2927         LLVM optimizations don't try to remove them.
2928
2929         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2930         different file so the original remains.
2931
2932 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2933
2934         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2935
2936         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2937
2938         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2939         support for non-inline unwind descriptors.
2940
2941 2009-12-07  Geoff Norton  <gnorton@novell.com>
2942
2943         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2944         the interrupt_count slightly differently.  Native threads were never
2945         marked as resumed.
2946
2947 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2948
2949         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2950         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2951         yet generate this info.
2952
2953         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2954
2955         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2956         client can distinguish between intptrs and longs.
2957
2958 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2959
2960         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2961         blob.
2962
2963         * aot-runtime.c (load_function): Update after the change above.
2964
2965         * mini.h: Bump AOT file format version.
2966
2967         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2968         if the delegate class is dynamic.
2969
2970         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2971         in gshared code too using the new rgctx info type
2972         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2973
2974 2009-12-04  Geoff Norton  <gnorton@novell.com>
2975
2976         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2977         we need to track the original suspend count so the thread properly
2978         wakes up in resume_thread.
2979
2980 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2981
2982         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2983         code.
2984
2985         * generics.cs: Add a test.
2986
2987         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2988         is 0. Simplify a lot of code using this.
2989
2990         * mini-trampolines.c (mono_delegate_trampoline): Call
2991         mono_create_static_rgctx_trampoline () before saving the final address in
2992         delegate->method_code, to avoid calling it each time a delegate is first called.
2993
2994         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2995         which need static rgctx trampolines.
2996
2997         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2998         keyed on the method+addr pair, since addr could be either the method addr or
2999         an unbox trampoline in the AOT case. Fixes #560246.
3000
3001 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
3002
3003         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
3004         place it was called before too.
3005
3006 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
3007
3008         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
3009         if no security manager is present, to speed up the AOT case. Call
3010         mono_class_vtable () full with raise_on_error == TRUE instead.
3011
3012 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
3013
3014         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
3015         the local optimization passes can take its result into account. Fixes
3016         #559876.
3017
3018         * exceptions.cs: Add a test.
3019
3020 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
3021
3022         This patch is contributed under the terms of the MIT/X11 license
3023
3024         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
3025
3026 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
3027
3028         * mini.h (MonoInst): Remove unused 'ssa_op' field.
3029
3030         * debugger-agent.c: Rework the handling of stack traces of running threads to
3031         avoid crashes if compute_frames () tries to walk the stack of running thread.
3032
3033         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
3034
3035         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
3036
3037         * mini.h (StackFrameInfo): Add an 'lmf' field.
3038
3039 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
3040
3041         * debugger-agent.c (suspend_current): Always set really_suspended.
3042
3043         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
3044
3045         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
3046
3047 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
3048
3049         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
3050         really suspended.
3051
3052 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
3053
3054         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
3055
3056 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3057
3058         * mini-trampolines.c: Fix MSVC build.
3059
3060 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3061
3062         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
3063
3064 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
3065
3066         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
3067         the instruction following an OP_FCOMPARE is optimized away.
3068
3069 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
3070
3071         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
3072         emit_autoreg () into this arch-specific function.
3073
3074         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
3075         code, it is no longer needed.
3076
3077         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
3078
3079         * mini.h: Bump AOT file format version.
3080
3081         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
3082         using the sorted_code_offsets array, instead of reading it from the
3083         exception debug info.
3084         (load_method): Call mono_aot_find_jit_info instead of
3085         decode_exception_debug_info ().
3086
3087         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
3088         LLVM compiled as a flag.
3089
3090 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
3091
3092         * debugger-agent.c (resume_thread): Fix a warning.
3093
3094         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
3095         generated.
3096
3097 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3098
3099         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
3100         contents to MonoAotFileInfo.
3101
3102 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3103
3104         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
3105         Put all binary data into a giant blob, similarly to the way .net assemblies
3106         store binary data. Emit offset tables in a compact form to reduce their size.
3107
3108         * mini.h: Bump AOT file format version.
3109
3110         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
3111         places.
3112
3113         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
3114         avoid linear searches at runtime.
3115
3116         * aot-runtime.c (find_symbol): Update this to use the hash.
3117
3118         * mini.h: Bump AOT file format version.
3119
3120 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3121
3122         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
3123         container.
3124
3125         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
3126         too.
3127
3128         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
3129         the distribution of got slot types.
3130
3131         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
3132
3133         * method-to-ir.c: Add support for generating explicit null checks.
3134
3135 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
3136
3137         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
3138         on a random thread if possible.
3139
3140         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
3141         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
3142         correctly.
3143
3144         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
3145         regs. Pass the real size of the regs array to mono_unwind_frame ().
3146
3147         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
3148         ones instead.
3149
3150 2009-11-24  Geoff Norton  <gnorton@novell.com>
3151
3152         * mini-darwin.c: Work around apple bug rdar://7209349  See
3153         http://openradar.appspot.com/7209349 for details.  Synopsis,
3154         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
3155         never been initialized before.
3156
3157 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3158
3159         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
3160
3161         * mini-arm.c (mono_arm_thumb_supported): New helper function.
3162
3163 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3164
3165         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
3166         OP_SHL_IMM is not 32 bit.
3167
3168 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3169
3170         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
3171
3172 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3173
3174         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
3175         encountered.
3176
3177         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
3178         > 0 since some threads can resume if their resume_count is > 0.
3179         (invoke_method): Avoid reading freed memory.
3180
3181         * debugger-agent.c (process_suspend): Extract the suspend code from
3182         process_single_step_inner () to a separate function. Rework the code to prevent
3183         races between this function and thread interrupts.
3184
3185         * debugger-agent.c (suspend_current): Check the resume_count field instead
3186         of resume_one so suspends+resumes during single threaded invokes work
3187         correctly.
3188
3189 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3190
3191         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
3192         to make the generated code smaller.
3193
3194         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
3195         sequence generated by recent LLVM versions.
3196
3197         * mini-llvm.c: Add support for a few simple cases which weren't supported
3198         before.
3199
3200         * mini-trampolines.c (mono_magic_trampoline): Don't call
3201         mono_arch_get_vcall_slot () when llvm is enabled.
3202
3203         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
3204
3205         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
3206         into a new function called common_call_trampoline () which is used by the
3207         llvm vcall trampoline as well.
3208
3209         * debugger-agent.c: Implement single threaded invokes.
3210
3211         * debugger-agent.c: Revert change which broke the agent on linux.
3212
3213         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3214         #557606.
3215
3216         * generics.cs: Add a test.
3217
3218 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3219
3220         * debugger-agent.c: Fix the cygwin build.
3221
3222 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3223
3224         * cprop.c: Remove this unused file.
3225
3226 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3227
3228         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3229         #557262.
3230
3231         * basic.cs: Add a test.
3232
3233 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3234
3235         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3236         in one more place.
3237
3238 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3239
3240         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3241         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3242         it. Use this flag to control llvm related code paths instead of #ifdef
3243         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3244         AOT code.
3245
3246         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3247
3248         * mini.h: Bump AOT file format version.
3249
3250         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3251         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3252
3253         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3254         was used as an assembly filter.
3255
3256 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3257
3258         * unwind.c: Fix support for ppc.
3259
3260         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3261         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3262
3263 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3264
3265         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3266         port.
3267         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3268         added by the ps3 changes.
3269
3270 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3271
3272         * mini-gc.c: Resurrect this, so at least it compiles.
3273
3274         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3275
3276 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3277
3278         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3279         create_event_list () so assembly filters can be used.
3280
3281         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3282         from the LMF.
3283
3284 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3285
3286         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3287         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3288         is disabled.
3289
3290         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3291         classes for char/bool too.
3292
3293         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3294
3295         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3296         used.
3297
3298         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3299         Fix warnings.
3300
3301 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3302
3303         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3304         
3305         Code contributed under MIT/X11 license.
3306
3307 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3308
3309         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3310         threads in native code work.
3311
3312         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3313         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3314         version.
3315
3316 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3317
3318         * debugger-agent.c: Implementation for Windows platform.
3319
3320         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3321         primitives. Use SEH to implement breakpoints and single stepping.
3322
3323         * mini-x86.h: Enable soft debugger on Windows.
3324
3325         Code contributed under MIT/X11 license.
3326
3327 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3328
3329         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3330         under XEN. Fixes #522894.
3331
3332         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3333
3334         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3335         interface calls in LLVM AOT code.
3336
3337         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3338         is found.
3339
3340         * mini-llvm.c: Add support for OP_VPHI.
3341
3342         * objects.cs: Add a test.
3343
3344 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3345
3346         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3347         this is called on the debugger thread.
3348
3349 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3350
3351         * mini-llvm.c: Add soft-float support.
3352
3353         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3354         FCALL which returns an R4.
3355
3356         * driver.c (mono_main): Add a missing '\n'.
3357
3358         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3359         platforms which doesn't support the LLVM IMT trampoline.
3360
3361 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3362
3363         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3364
3365         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3366
3367         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3368         virtual calls.
3369
3370         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3371
3372 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3373
3374         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3375         Instead of emitting a method_order table, sort the contents of the code_offsets
3376         table and do a binary search in the sorted table. The previous approach doesn't
3377         work with LLVM which emits methods in a arbitrary order.
3378
3379         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3380         in the .eh_frame section in ELF files.
3381
3382         * mini.h: Bump corlib file format version.
3383
3384         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3385
3386         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3387         LDMIA->LDM macro name change.
3388
3389 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3390
3391         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3392         x86.
3393
3394         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3395         SVN.
3396
3397         * aot-compiler.c: Ditto.
3398
3399         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3400         &align to mini_type_stack_size_full ().
3401
3402         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3403
3404         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3405
3406 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3407
3408         * mini-arm.c: Compute the stack space used by arguments using
3409         mini_type_stack_size_full ().
3410
3411 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3412
3413         * optflags-def.h: Remove dead TREEPROP optimization.
3414
3415 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3416
3417         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3418
3419         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3420
3421 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3422
3423         * driver.c (mono_jit_parse_options): New public API function to parse options
3424         as done by the runtime executable.
3425
3426         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3427         when handling named arguments.
3428
3429 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3430
3431         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3432         for passing small vtypes in registers, make the CallInfo structures more
3433         similar to the code on the other platforms.
3434
3435         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3436         the code in the prolog requires it.
3437
3438 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3439
3440         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3441         (koush@koushikdutta.com).
3442
3443         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3444         where the thunk memory should be allocated from. Fixes appdomain unloading
3445         on arm.
3446
3447 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3448
3449         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3450         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3451
3452 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3453
3454         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3455         AOT, as it is not implemented yet.
3456
3457         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3458
3459 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3460
3461         * debugger-agent.c: Fix windows build.
3462
3463 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3464
3465         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3466         after the client connects/disconnects.
3467
3468         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3469         when an exception of a given type is thrown.
3470
3471         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3472         only on an uncaught exception.
3473
3474         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3475
3476         * debugger-agent.c: Add a 'launch' option.
3477
3478 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3479
3480         * debugger-agent.c: Add a 'timeout' option.
3481
3482 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3483
3484         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3485         the JDWP agent.
3486
3487 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3488
3489         * debugger-agent.c (set_breakpoint): Emit a log message.
3490
3491 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3492
3493         * mini-arm.c: Fix the arm build.
3494
3495 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3496
3497         * aot-compiler.c: don't leak the value returned from
3498         mono_type_full_name().
3499
3500 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3501
3502         * debugger-agent.c: defer including mono-mutex.h until we know the
3503         agent is supported.
3504
3505 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3506
3507         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3508         of pthreads directly.
3509
3510         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3511         exception handlers. Pass info argument.
3512
3513         * mini.h: Adjust signatures of soft debugger functions to pass void*
3514         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3515
3516         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3517         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3518         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3519         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3520
3521         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3522
3523         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3524         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3525         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3526         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3527
3528         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3529
3530         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3531
3532         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3533
3534         * mono-semaphore.h: Skeleton implementation for Windows.
3535
3536         Code contributed under MIT/X11 license.
3537
3538 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3539
3540         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3541
3542         Code contributed under MIT/X11 license.
3543
3544 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3545
3546         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3547
3548         Code contributed under MIT/X11 license.
3549
3550 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3551
3552         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3553         debug info to 100 because 10 still slows down gdb too much.
3554
3555         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3556         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3557         them in the wrappers.
3558
3559 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3560
3561         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3562
3563         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3564
3565         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3566         function mono_aot_get_array_helper_from_wrapper ().
3567
3568         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3569         array helper methods.
3570
3571 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3572
3573         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3574         the value was loaded from memory.
3575
3576         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3577         the value was loader from there.
3578
3579         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3580         without constant swizzle.
3581
3582 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3583
3584         * mini-amd64.c: Put soft debugger functions behind a
3585         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3586
3587         * mini-amd64.h: disable the soft debugger in windows.
3588
3589         Code contributed under MIT/X11 license.
3590
3591 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3592
3593         * mini-x86.c: Put soft debugger functions behind a
3594         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3595
3596         Code contributed under MIT/X11 license.
3597
3598 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3599
3600         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3601         to mono_arch_find_jit_info_ext.
3602
3603         Code contributed under MIT/X11 license.
3604
3605 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3606
3607         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3608
3609         * debugger-agent.c: Add support for filtering events by assemblies.
3610
3611         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3612         the agent is not enabled.
3613
3614 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3615
3616         * exceptions-x86.c: hopefully last change to fix the windows build.
3617         This one courtesy of Jonathan Chambers.
3618
3619 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3620
3621         * debugger-agent.c: remove unused function.
3622
3623 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3624
3625         * debugger-agent.c: add #ifdefs for a few header files.
3626         * mini-x86.h: disable the soft debugger in windows.
3627         Step 1 of 2 to make this compile on windows with gcc.
3628
3629 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3630
3631         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3632         as it breaks the build.
3633
3634 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3635
3636         Merge the soft debugger branch.
3637
3638         * debugger-agent.h debugger-agent.c: New files containing the soft
3639         mode debugger module.
3640
3641         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3642         at the appropriate locations.
3643
3644         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3645         opcode.
3646
3647         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3648         enable/disable single stepping.
3649
3650         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3651         which returns all information in a StackFrameInfo structure, and can handle the
3652         LMF frames added by the debugger.
3653
3654         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3655         about an LMF frame.
3656
3657         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3658         walker function which works on a specific thread and passes a StackFrameInfo
3659         structure to its callback.
3660
3661         * mini.c (mini_init): Initialize the debugger agent.
3662
3663         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3664
3665         * mini-ops.h: Add OP_SEQ_POINT opcode.
3666
3667         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3668         arguments to the debugger agent.
3669
3670 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3671
3672         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3673         speed things up.
3674
3675         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3676
3677         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3678
3679         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3680
3681         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3682         if needed.
3683         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3684         sets the IMT argument and makes a virtual call.
3685
3686         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3687
3688 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3689
3690         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3691         the windows build.
3692
3693 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3694
3695         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3696         runtime. Fixes #551228.
3697
3698 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3699
3700         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3701
3702         * basic.cs: Add a test.
3703
3704         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3705         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3706         CONSTRAINED. Fixes #550964.
3707
3708         * generics.cs: Add a test.
3709
3710 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3711
3712         * mini-posix.c (add_signal_handler): Use
3713         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3714
3715 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3716
3717         Contributed under the terms of the MIT/X11 license by
3718         Jerry Maine <crashfourit@gail.com>.
3719
3720         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3721         sse4a for simd intrinsics.
3722
3723         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3724         sse4a for simd intrinsics.
3725
3726 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3727
3728         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3729         instead of inst_p1 which is not the same on ILP32 platforms.
3730
3731 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3732
3733         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3734         not the mscorlib one before calling mono_get_lmf_addr.
3735
3736         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3737         of the ip to the LMF.
3738
3739         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3740         immediate in the op->op_imm optimization.
3741
3742         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3743         understand. VTypes now work, but are not abi compliant, as they are
3744         split into 4 byte parts instead of 8.
3745         (emit_memcpy): Fix the unrolled case to work on the PS3.
3746
3747         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3748
3749         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3750         the default when static linking.
3751
3752         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3753
3754         * aot-compiler.c: Add an autoreg option to automatically register
3755         statically linked aot modules using ELF .ctors.
3756
3757         * genmdesc.pl: Add __ppc64__ to allowed defines.
3758
3759 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3760
3761         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3762         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3763
3764 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3765
3766         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3767
3768 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3769
3770         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3771         which will contain the domain where the method was found.
3772
3773         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3774         mini_jit_info_table_find ().
3775
3776         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3777
3778         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3779
3780 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3781
3782         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3783         set, its not supported yet.
3784
3785 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3786
3787         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3788         iface wrapper is not found.
3789         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3790
3791 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3792
3793         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3794         which have a different name.
3795
3796         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3797         wrappers and Array.GetGenericValueImpl ().
3798
3799         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3800         because of the change above.
3801
3802         * generics.cs: Add a test for full aot + generic array ifaces.
3803
3804 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3805
3806         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3807         that hides the previous one.
3808
3809 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3810
3811         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3812         marshalled. Fixes #541623.
3813
3814 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3815
3816         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3817
3818 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3819
3820         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3821
3822 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3823
3824         * mini-posix.c (sigprof_signal_handler):
3825         Implemented support for building stat call chans in different ways.
3826
3827 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3828
3829         * mini-exceptions.c (mono_find_jit_info):
3830         Also check that a jit info has been found (fixes a profiler crash).
3831
3832 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3833
3834         * mini.c (mono_codegen):
3835         Call mono_profiler_code_buffer_new with correct code address.
3836
3837 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3838
3839         * driver.c (mono_main): Change the date in the copyright.
3840
3841 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3842
3843         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3844         allocator in shared generic code for open classes, because we
3845         can't get those classes' vtables.  We need to make managed
3846         allocators not depend on the vtable at compile-time to solve this.
3847
3848 2009-10-13  Martin Baulig  <martin@ximian.com>
3849
3850         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3851         `const guint8 *trampoline' argument; send both the old and the new
3852         notification.
3853
3854 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3855
3856         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3857         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3858         (can_marshal_struct): Skip structures with auto layout.
3859
3860         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3861
3862 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3863
3864         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3865         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3866         a variable to hold the stack slot used by the int<->float conversion opcodes.
3867
3868         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3869
3870 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3871
3872         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3873         when using full-aot.
3874
3875 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3876
3877         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3878         each instance of Comparer<T>.
3879
3880         * generics.cs: Add a new test.
3881
3882 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3883
3884         * driver.c (parse_debug_options): Add a 'gdb' option.
3885
3886         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3887
3888         * image-writer.c: Add support for emitting the image into a memory buffer.
3889
3890         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3891
3892         * aot-compiler.c: Add support for registering debug info with GDB using the
3893         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3894         MONO_XDEBUG to 'gdb'.
3895
3896 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3897
3898         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3899         gdb mode.
3900
3901 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3902
3903         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3904         can be used to set breakpoints in gdb.
3905
3906         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3907         segment to an absolute address.
3908
3909 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3910
3911         * method-to-ir.c: Use the managed array allocator method if
3912         available.
3913
3914 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3915
3916         * aot-compiler.c : Fix the MSVC builds
3917
3918         Code is contributed under MIT/X11 license.
3919
3920 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3921
3922         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3923         avoid registering 1 symbol file per method with gdb.
3924
3925 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3926
3927         * mini-sparc.c: Fix the handling of enums with base type long.
3928
3929         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3930
3931         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3932         instead of using type->data.klass as the later doesn't work with generics.
3933
3934 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3935
3936         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3937         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3938         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3939         works differently now and we don't handle it in the JIT anymore.
3940
3941         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3942         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3943         the Thread class split.
3944
3945 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3946
3947         * driver.c: Don't run tests with the obsolete treeprop optimization.
3948
3949         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3950         variable volatile. Fixes #541577.
3951
3952         * basic-calls.cs: Add a new test.
3953
3954         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3955
3956 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3957
3958         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3959         work/required with recent iphone sdk versions.
3960
3961         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3962         structures.
3963
3964         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3965         in the VCALL decomposition code.
3966
3967 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3968
3969         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3970
3971         * basic.cs: Add a test.
3972
3973         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3974         generic invokes.
3975
3976         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3977         searches all the domains of the current thread.
3978
3979         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3980
3981 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3982
3983         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3984         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3985
3986         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3987         for non-jit trampolines.
3988
3989         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3990
3991         * aot-compiler.c (add_wrappers): Ditto.
3992
3993         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3994         the size of the param area used by dyn_call to 6 which covers the majority of
3995         methods.
3996
3997         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3998
3999         * mini-arm.c: Implement support for passing/receiving
4000         longs and receiving floats in the dyn_call code.
4001
4002         * mini-amd64.c: Implement support for receiving vtypes in registers in
4003         the dyn_call code.
4004
4005         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
4006         the dyn_call code.
4007
4008 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
4009
4010         * mini-arm.c (get_call_info): Return more precise information in
4011         ArgInfo->regtype.
4012         (dyn_call_supported): Use the information in CallInfo.
4013
4014         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
4015
4016         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
4017         code.
4018
4019         * mini-arm.c: Update after the dyn_call api changes.
4020
4021         * mini.c (mini_create_jit_domain_info): Register a destructor function
4022         for the runtime_invoke_hash.
4023
4024         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
4025         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
4026         this function.
4027         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
4028         (dyn_call_supported): Simplify this by using get_call_info ().
4029         (mono_arch_dyn_call_free): New destructor function.
4030
4031         * generics.cs: Remove a printf.
4032
4033         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
4034
4035         * mini-arm.c: Add support for enum return values and passing a few arguments
4036         on the stack.
4037         
4038         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
4039         dyn invoke.
4040
4041         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
4042
4043         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
4044         the dynamic invoke wrappers.
4045
4046         * mini-arm.c: Implement OP_DYN_CALL for arm.
4047
4048         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
4049         supported by the dynamic runtime invoke wrapper.
4050
4051         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
4052         runtime invoke wrapper.
4053
4054         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
4055         if possible when running with full-aot.
4056
4057         * mini-ops.h: Add OP_DYN_CALL opcode.
4058
4059         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
4060         with dynamic arguments lists similar to libffi.
4061
4062 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
4063
4064         * method-to-ir.c: Fix the previous change on 64 bit platforms.
4065         
4066         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
4067         to NEWARR.
4068
4069         * iltests.il.in: Add a new test.
4070         
4071 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
4072
4073         * aot-compiler.c (add_generic_instances): Add more instances of
4074         GenericEqualityComparer.
4075
4076 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4077
4078         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
4079
4080 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4081
4082         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
4083         comments on some functions that now can fail.
4084
4085 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
4086
4087         * Makefile.am: Add Info.plist to EXTRA_DIST
4088
4089 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4090
4091         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
4092         static synchronized wrappers. Fixes #539500.
4093
4094 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
4095
4096         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
4097         properly.
4098
4099 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4100
4101         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
4102         lmf before calling filter clauses as well. Fixes #539550.
4103
4104         * exceptions.cs: Add a test.
4105         
4106 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
4107
4108         * aot-compiler.c (add_generic_class): Add instances of
4109         Array.GetGenericValueImpl as well.
4110
4111         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
4112         can be tested too.
4113
4114         * generics.cs: Add a fullaot linq test.
4115
4116 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
4117
4118         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
4119         reg r1 on arm.
4120
4121 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4122
4123         * mini-trampolines.c (mono_delegate_trampoline) : Call
4124           mono_cominterop_get_invoke if the delegate target object
4125           is a COM object.
4126
4127         Code is contributed under MIT/X11 license.
4128
4129 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
4130
4131         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
4132         internal call is defined outside platform code. Reduce code 
4133         duplication with existing [Method|Field]AccessException
4134
4135 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4136
4137         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
4138         if the return value is a small struct passed on regs.
4139
4140 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
4141
4142         * cpu-arm.md mini-arm.c: Remove unused opcodes.
4143
4144         * mini-codegen.c: Enable the cpu description validation for arm.
4145
4146 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
4147
4148         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
4149         test which depends on structs to objects.cs.
4150         
4151         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
4152         require object model related stuff working.
4153
4154         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
4155
4156         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
4157
4158         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
4159         against the instruction metadata in mini-ops.h. amd64 only for now.
4160
4161         * mini-ops.h: Fix some instruction descriptions.
4162
4163         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
4164         unused instructions.
4165
4166 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4167
4168         * exceptions.cs: Add a new test.
4169
4170 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4171
4172         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
4173
4174 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4175
4176         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
4177         skip empty phi opcodes.
4178         
4179         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
4180         correctly by zero extending after loads. Skip methods containing calls
4181         to the monitor enter/exit trampolines.
4182
4183         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
4184         when calling mono_thread_force_interruption_checkpoint ().
4185
4186         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
4187
4188         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
4189         64 bit thunks.
4190         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
4191
4192         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
4193         bootstrap could run.
4194
4195 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4196
4197         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
4198
4199 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4200
4201         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
4202         of the method to
4203         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4204         LLVM might be very short.
4205
4206         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
4207         in OP_THROW/RETHROW.
4208
4209         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4210         alignment on osx.
4211
4212 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4213
4214         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4215         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4216         LLVM might be very short.
4217
4218 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4219
4220         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4221         the alignment for the value of sp.
4222
4223 2009-09-01  Geoff Norton  <gnorton@novell.com>
4224
4225         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4226         managed wrappers in full aot.
4227
4228 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4229
4230         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4231
4232 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4233
4234         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4235
4236 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4237
4238         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4239
4240         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4241         saved info.
4242
4243         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4244
4245         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4246         depend on the info MonoMethodHeader which could be missing in IL stripped
4247         assemblies.
4248
4249 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4250
4251         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4252         they are only 4 byte aligned.
4253
4254 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4255
4256         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4257         was done previously, since using SP causes too many problems.
4258
4259         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4260         frames without a frame pointer works.
4261
4262         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4263         global register in methods with calls, since the calls can go through
4264         a static rgctx trampoline which doesn't save it.
4265
4266 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4267
4268         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4269
4270 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4271
4272         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4273
4274 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4275
4276         * method-to-ir.c: Fix warnings for uninitialized variables.
4277
4278 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4279
4280         * mini-exceptions.c:
4281         * aot-compiler.c: Fix printf warnings.
4282
4283 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4284
4285         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4286         Add GetGenericValueImpl<string>.
4287         
4288         * aot-compiler.c (add_generic_instances): Add instances of
4289         GenericEqualityComparer<T> for primitive types. Only emit the array
4290         wrappers into the mscorlib image.
4291
4292 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4293
4294         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4295         the methods_loaded array using amodule->info->nmethods.
4296
4297         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4298         (MONO_AOT_FILE_VERSION): Bump this.
4299
4300         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4301         to work.
4302
4303         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4304         MonoJitInfo doesn't belong to its methods aot image.
4305
4306 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4307
4308         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4309
4310         * mini-arm.c: Fix warnings.
4311         
4312         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4313
4314         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4315         supports it.
4316
4317 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4318
4319         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4320         avoid clobbering IP.
4321
4322         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4323         hold the trampoline argument, so its initial value is available during
4324         debugging.
4325
4326 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4327
4328         * exceptions-arm.c:
4329         * exceptions-hppa.c:
4330         * mini.c:
4331         * exceptions-s390x.c:
4332         * exceptions-mips.c:
4333         * exceptions-ppc.c:
4334         * exceptions-sparc.c:
4335         * exceptions-alpha.c:
4336         * aot-runtime.c:
4337         * mini-trampolines.c:
4338         * exceptions-x86.c:
4339         * exceptions-s390.c: add and use #define's instead of sizeof()
4340         for MonoJitInfo and MonoJitInfoTable.
4341
4342 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4343
4344         * tramp-arm.c:
4345         * tramp-amd64.c:
4346         * tramp-ppc.c:
4347         * tramp-x86.c: use a #define instead of sizeof() for a few
4348         structures that use a zero-length array.
4349
4350 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4351
4352         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4353         case when the method is dynamic. Fixes #529238.
4354
4355 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4356
4357         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4358         of asserting when a method is JIT compiled in full-aot mode.
4359
4360 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4361         
4362         Contributed under the terms of the MIT/X11 license by
4363         Jerry Maine <crashfourit@gail.com>.
4364         
4365         * fixed wrong dates in changelog.
4366
4367 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4368         
4369         Contributed under the terms of the MIT/X11 license by
4370         Jerry Maine <crashfourit@gail.com>.
4371
4372         * basic-simd.cs: added test for packed double square root.
4373         * cpu-amd64.md: added opcode info for packed double square root.
4374         * cpu-x86.md: added opcode info for packed double square root.
4375         * mini-ops.h: added IR opcode for packed double square root.
4376         * mini-x86.c: added IR to native translation code for packed double square root.
4377         * mini-amd64.c: removed todo for packed double square root.
4378         * simd-intrinsics.c: added method to IR opcode converstion for
4379         packed double square root.
4380
4381 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4382
4383         Contributed under the terms of the MIT/X11 license by
4384         Jerry Maine <crashfourit@gail.com>.
4385
4386         * mini-amd64.c: Added a change to help tell the difference as 
4387         to what perpose the xmm register is being used--mainly to help
4388         with debuging.
4389         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4390         (one used for special cases) xmm registers for both fp
4391         and simd ops. Added define to turn on new feature in the regalloc
4392         that allows fp and simd ops to share the xmm regs happily.
4393         * codegen.c: Added code to detect for which perpose an xmm reg is
4394         being used (fp or simd) and to translate back and forth to the
4395         correct logical reg bank (fp or simd) for 'spill load's.
4396
4397 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4398
4399         Contributed under the terms of the MIT/X11 license by
4400         Jerry Maine <crashfourit@gail.com>.
4401
4402         * basic-simd.cs: Added tests for stressing the regalloc when running with
4403         16 simd regs and when simd and fp ops share the same reg bank.
4404
4405 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4406
4407         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4408         in shared generic code, we might have to look up the class in the
4409         RGCTX.  If we use the class directly, compute its GC descriptor.
4410
4411 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4412
4413         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4414
4415 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4416
4417         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4418         check for errors. Fixed the case when the class with the Main
4419         method is broken.
4420
4421 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4422
4423         Contributed under the terms of the MIT/X11 license by
4424         Jerry Maine <crashfourit@gail.com>.
4425
4426         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4427
4428 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4429
4430         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4431
4432 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4433
4434         * method-to-ir.c: Fix naming of stelem and ldelem.
4435
4436 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4437
4438         * driver.c (main_thread_handler): Check that the assembly loaded
4439         matches the filename when doing AOT.
4440
4441 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4442
4443         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4444         call it anymore.
4445
4446         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4447         utils/mono-sigcontext.h).
4448
4449         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4450         #ifdef.
4451
4452 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4453
4454         * mini.c (mono_codegen):
4455         Call profiler hook to keep track of method code buffers.
4456
4457 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4458
4459         * method-to-ir.c: Invoke write barriers for the
4460         Interlocked.(Compare)Exchange JIT intrinsics.
4461
4462 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4463
4464         * Makefile.am (version.h): Fix issues when built out of tree.
4465         Remove some redundant 'grep's piped through 'sed's.
4466
4467 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4468
4469         This patch is contributed under the terms of the MIT/X11 license
4470
4471         * mini-ppc.c (mono_arch_output_basic_block):
4472         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4473         for bits 32-47 with signed load/store diplacements for bits
4474         48-63.  Use prefered base/offset order for indexed form.
4475         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4476         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4477         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4478         OP_LOADI2_MEMBASE): Same.
4479         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4480         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4481         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4482         indexed form.
4483         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4484         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4485         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4486         OP_LOADI1_MEMINDEX): Same
4487         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4488         OP_STORER8_MEMINDEX): Same
4489         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4490         computations.
4491         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4492         for bits 32-47 with signed load/store diplacements for bits
4493         48-63.  Use prefered base/offset order for indexed form.
4494
4495 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4496
4497 This patch is contributed under the terms of the MIT/X11 license
4498
4499         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4500         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4501         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4502         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4503         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4504         cfg->stack_usage to avoid size warnings.
4505         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4506         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4507         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4508         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4509         to convert.
4510         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4511         after code varible is initialized.
4512         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4513         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4514         (mono_arch_emit_epilog): 
4515         Move Use ppc_load32 for cfg->stack_usage to avoid size
4516         warnings.
4517
4518 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4519
4520         * method-to-ir.c: The write barrier doesn't do the store anymore,
4521         so we have always to emit it.  Also, emit the wbarrier after the
4522         store.
4523
4524 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4525
4526         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4527         for argument count 3 too.
4528
4529 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4530
4531         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4532         the caller handle the exceptions.
4533         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4534         method. Fixes #524498.
4535
4536 2009-07-22  Geoff Norton  <gnorton@novell.com>
4537
4538         * mini-exceptions.c: Fix build on ia64.
4539
4540 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4541
4542         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4543         barriers.
4544
4545 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4546
4547         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4548         code.
4549
4550 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4551
4552         * basic-simd.cs (Main): Pass args to the test driver.
4553
4554 2009-07-20  Geoff Norton  <gnorton@novell.com>
4555
4556         * mini-x86.h: Fix the x86 version guards to use Apple's
4557         properly defined macros.
4558
4559 2009-07-20  Geoff Norton  <gnorton@novell.com>
4560
4561         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4562         aligned access.
4563
4564 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4565
4566         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4567         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4568         the information which is needed for invokes, so only one locking+hash table
4569         lookup is needed.
4570
4571         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4572         
4573         * aot-compiler.c (add_generic_instances): Emit instances of 
4574         GenericComparer<T> for primitive types.
4575
4576 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4577
4578         * mini-posix.c: Fix linux build.
4579
4580 2009-07-19  Geoff Norton  <gnorton@novell.com>
4581
4582         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4583         mono_gdb_render_native_backtraces
4584         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4585         so we implement the sane semantics to the runtime here
4586         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4587         so we need to call it differently (mono_gdb_render_native_backtraces)
4588         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4589         here for default implementations.
4590         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4591         support Apple's weird syscall (SYS_fork) implementation and not busy
4592         loop in abort() on native crashes on OSX anymore.
4593
4594 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4595
4596         * aot-runtime.c (load_method): Change the handling of the
4597         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4598         are used.
4599
4600         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4601
4602 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4603
4604         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4605         seems to break the aot tests.
4606         
4607         * mini.c (mono_patch_info_equal): Fix the handling of 
4608         MONO_PATCH_INFO_RGCTX_FETCH.
4609
4610 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4611
4612         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4613
4614         * mini.c (mono_patch_info_hash): Fix the handling of 
4615         MONO_PATCH_INFO_INTERNAL_METHOD.
4616         (mono_patch_info_equal): Ditto.
4617
4618 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4619
4620         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4621         in a few places.
4622         
4623         * mini-llvm.c: Add some infrastructure for AOT support.
4624
4625 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4626
4627         * mini-llvm-cpp.c: Update to the latest llvm api.
4628         
4629         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4630         option to false to prevent llvm from installing signal handlers which
4631         trip up the gc.
4632         
4633 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4634
4635         * cpu-x86.md:
4636         * cpu-amd64.md: Revert previous change as those instructions
4637         take 2 separate arguments. Remember to read the arch docs more
4638         carefully next time.
4639
4640 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4641
4642         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4643
4644 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4645
4646         * mini-ppc.c: exploit multiple load/store units if available (rest of
4647         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4648         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4649
4650 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4651
4652         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4653         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4654
4655 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4656
4657         * cpu-x86.md: Fix missing clobbering from trancendental simd
4658         ops.
4659
4660         * cpu-amd64.md: Same.
4661
4662 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4663
4664         Contributed under the terms of the MIT/X11 license by
4665         Jerry Maine <crashfourit@gail.com>.
4666
4667         * basic-simd.cs: Added tests for single and doulble indexers.
4668
4669         * cpu-amd64.md: Added simd opcode information.
4670
4671         * mini-amd64.c: Added IR to native simd generation code.
4672         Added simd register names and function that returns them.
4673
4674         * mini-amd64.h: Added marcos to turn on simd code compilation in
4675         amd64. Added max simd register count marco. Added caller/callee
4676         register mask marcos. Added marcos to use simd register bank.
4677
4678         * mini.h: Added helper marco for shufling dwords and simple
4679         floats.
4680
4681 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4682
4683         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4684
4685         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4686
4687         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4688         the length of the native code as well.
4689
4690         * basic-simd.cs: Add a test for #521662.
4691
4692 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4693
4694         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4695
4696 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4697
4698         * mini.c: Register function for getting the IP from a signal
4699         context with metadata.
4700
4701 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4702
4703         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4704         call a generic class init trampoline if needed. Fixes #519336.
4705
4706         * generics.cs: Add a test.
4707         
4708 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4709
4710         * method-to-ir.c: When doing a call which might be remote from
4711         shared generic code to other shared code with open type arguments,
4712         get the remoting invoke wrapper from the RGCTX and do an indirect
4713         call to it.
4714
4715 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4716
4717         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4718         after the unbox trampoline in the full-aot case.
4719
4720 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4721         
4722         * mini.c: Move initialization of jit_mutex before debugger initialization
4723         
4724         to avoid crashes.
4725         
4726         
4727         * Info.plist: added Info.plist and link flag to enable the mono executable
4728         to access other processes. Requires codesigning of the executable to work.
4729         
4730         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4731         
4732         compile on OS X.
4733         
4734
4735 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4736
4737         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4738
4739 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4740
4741         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4742         when the generic instance is an instantiation of a subclass of the
4743         methods class. Fixes #517166.
4744
4745 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4746
4747         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4748         code.
4749
4750         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4751         AOTed code.
4752
4753         * CMakeLists.txt: Add minimal support for installation.
4754
4755 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4756
4757         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4758         determine whenever a method is directly callable to a separate function.
4759
4760         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4761         needed ones as a result of the previous change.
4762
4763         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4764         type of register arrays.
4765
4766         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4767         type of register arrays.
4768
4769 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4770         
4771         Contributed under the terms of the MIT/X11 license by
4772         Jerry Maine <crashfourit@gail.com>.
4773
4774         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4775
4776 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4777
4778         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4779
4780 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4781
4782         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4783         dump of structure return value. Fix some formatting.
4784         * cpu-s390x.md: Fix lengths of instruction sequences.
4785         * mini-s390.c: Minor formatting changes.
4786
4787 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4788
4789         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4790         Use sigaction on freebsd as well.
4791
4792 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4793
4794         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4795         uses #ifdef on it.
4796         
4797         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4798
4799 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4800
4801         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4802
4803 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4804
4805         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4806
4807 2009-06-20  Martin Baulig  <martin@ximian.com>
4808
4809         * debug-mini.c
4810         (MonoDebuggerThreadFlags): New enum typedef.
4811         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4812         (mono_debugger_thread_created): Added `gpointer func' argument;
4813         initialize the new `thread_flags' field.
4814
4815 2009-06-18  Martin Baulig  <martin@ximian.com>
4816
4817         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4818         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4819
4820         * debug-debugger.c
4821         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4822         flag in `MONO_DEBUGGER__info.runtime_info'.
4823
4824         * driver.c
4825         (mono_main): Call mini_debugger_set_attach_ok() if generics
4826         sharing is disabled.
4827
4828 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4829
4830         * aot-compiler.c (add_wrappers): Fix a warning.
4831
4832         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4833         the ppc load/store macro changes.
4834
4835 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4836
4837         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4838
4839         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4840         not just the got symbol.
4841
4842         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4843         on ppc.
4844
4845         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4846         ppc.
4847         
4848         * aot-compiler.c: Remove some fixmes.
4849
4850         * driver.c (mono_main): Print a helpful message when cross-compiling.
4851
4852         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4853
4854         * method-to-ir.c (initialize_array_data): Do the optimization if the
4855         target byte order is little endian, instead of the host byte order.
4856
4857         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4858         wrappers into the mscorlib image, Emit a unique plt symbol for each
4859         image, emit symbols for plt entries.
4860
4861         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4862         a .size directive.
4863         
4864 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4865
4866         * aot-compiler.c (add_wrappers): Avoid calling 
4867         mono_marshal_get_type_info () since it can assert for some types.
4868
4869         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4870         ldtoken are used inside wrappers.
4871
4872         * helpers.c: Add support for prefixing tools with the arch name.
4873
4874         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4875         quantities when using ilp32.
4876
4877         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4878         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4879
4880         * image-writer.c: Use .long on ilp32.
4881
4882         * aot-compiler.c: Use 32 bit loads on ilp32.
4883         
4884 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4885
4886         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4887
4888         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4889
4890         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4891
4892         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4893         second got slot of every aot image.
4894         
4895         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4896         aot on platforms with function pointers.
4897
4898         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4899         support for aot/full aot on ppc/ppc64.
4900         
4901         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4902         arguments which are needed on ppc.
4903
4904         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4905         argument.
4906
4907         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4908         
4909         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4910
4911         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4912
4913         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4914
4915         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4916
4917 2009-06-17  Geoff Norton  <gnorton@novell.com>
4918
4919         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4920
4921 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4922
4923         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4924         to control whenever the dwarf writer is in xdebug or aot mode.
4925         (emit_class_dwarf_info): Use a separate abbrev for structures without
4926         children.
4927
4928         * aot-compiler.c: Pass the appending parameter to 
4929         mono_dwarf_writer_create ().
4930
4931         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4932         falls through to its next bblock. Fixes #513931.
4933
4934         * iltests.il: Add a test.
4935
4936         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4937         infor even if emit_line is FALSE, as the apple linker seems to require it.
4938
4939         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4940
4941         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4942         gcc does.
4943         (emit_fde): Ditto.
4944
4945 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4946
4947         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4948         mips build.
4949
4950 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4951
4952         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4953         'has_call_handler' fields.
4954
4955         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4956
4957         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4958         first bblock if not needed. Fixes #512790.
4959         
4960 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4961
4962         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4963         
4964         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4965         wrappers.
4966
4967         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4968         remoting-invoke-with-check wrappers, which are not needed when running with
4969         full-aot, since it doesn't support remoting.
4970         
4971 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4972
4973         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4974
4975         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4976         method info, it is not used anymore.
4977
4978         * mini.h: Bump AOT file format version.
4979         
4980         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4981         word smaller.
4982
4983         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4984         change above.
4985         
4986         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4987
4988         * mini.h: Bump AOT file format version.
4989         
4990 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4991
4992         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4993         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4994         iphone.
4995
4996         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4997         of CKFINITE and FBGE for VFP.
4998
4999 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
5000
5001         * aot-compiler.c: Don't align code to 16 bytes on arm.
5002         
5003         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
5004         before the methods they belong to.
5005
5006         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
5007         the full-aot case if possible, since the trampoline will be called right 
5008         away.
5009
5010         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
5011         trampolines to 1024 after the change above.
5012
5013         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
5014         trampoline to save 8 bytes per trampoline.
5015
5016         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
5017         change above.
5018
5019 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
5020
5021         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
5022
5023 2009-06-08  Martin Baulig  <martin@ximian.com>
5024
5025         * debug-mini.c
5026         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
5027         (_mono_debugger_throw_exception): Don't make this static.
5028         (_mono_debugger_unhandled_exception): Likewise.
5029         (mono_debugger_handle_exception): Moved to mini-exceptions.c
5030
5031         * debug-mini.c
5032         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
5033         (_mono_debugger_throw_exception): Add function prototype.
5034         (_mono_debugger_unhandled_exception): Likewise.
5035
5036         * mini-exceptions.c
5037         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
5038         arg; return the first exception handler if the exception is caught
5039         and we're running inside the debugger.
5040         (mono_debugger_handle_exception): Moved here from debug-mini.c;
5041         improve exception handle inside runtime-invoke, check whether the
5042         exception is actually caught in the method being invoked and not
5043         by the runtime-invoke-wrapper.
5044
5045 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
5046
5047         * image-writer.c: Improve support for the osx assembler.
5048
5049         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
5050         support them.
5051
5052 2009-06-08  Martin Baulig  <martin@ximian.com>
5053
5054         * debug-mini.c
5055         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
5056         (_mono_debugger_throw_exception): Don't make this static.
5057         (_mono_debugger_unhandled_exception): Likewise.
5058         (mono_debugger_handle_exception): Moved to mini-exceptions.c
5059
5060         * debug-mini.c
5061         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
5062         (_mono_debugger_throw_exception): Add function prototype.
5063         (_mono_debugger_unhandled_exception): Likewise.
5064
5065         * mini-exceptions.c
5066         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
5067         arg; return the first exception handler if the exception is caught
5068         and we're running inside the debugger.
5069         (mono_debugger_handle_exception): Moved here from debug-mini.c;
5070         improve exception handle inside runtime-invoke, check whether the
5071         exception is actually caught in the method being invoked and not
5072         by the runtime-invoke-wrapper.
5073
5074 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
5075
5076         * image-writer.c (append_subsection): Don't align subsections of the
5077         debug_line section as a workaround.
5078
5079         * dwarfwriter.c: Emit line number info in the AOT case as well.
5080
5081 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
5082
5083         This patch is contributed under the terms of the MIT/X11 license
5084
5085        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
5086        code_len <= code_size
5087
5088 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
5089
5090         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
5091
5092 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5093
5094         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
5095         invoke wrappers, we now use trampolines instead.
5096
5097 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5098
5099         * mini-darwin.c: The exception thread must not be registered with
5100         the GC.
5101
5102 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5103
5104         * mini-gc.c: Disable the code because it makes SGen crash.
5105
5106 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
5107
5108         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
5109         instead of asserting.
5110
5111 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5112
5113         * aot-compiler.c (mono_compile_assembly): Move the creation of the
5114         output file after the code has been compiled.
5115
5116 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
5117
5118         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
5119
5120 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5121
5122         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
5123         entries distinction to simplify the code.
5124
5125         * mini.h: Bump AOT file format version.
5126         
5127 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
5128
5129         * objects.cs: Fix the signature of one of the tests.
5130
5131         * mini.c (mini_create_ftnptr): New helper function, moved here from
5132         object.c.
5133         (mini_get_addr_from_ftnptr): Ditto.
5134         (mini_init): Install the new helpers.
5135
5136 2009-05-28  Martin Baulig  <martin@ximian.com>
5137
5138         Correctly initialize the debugger when embedding Mono.
5139
5140         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
5141         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
5142         see documentation in mini_debug_running_inside_mdb().
5143
5144         * debug-debugger.c
5145         (mini_debug_running_inside_mdb): New function to check whether
5146         we're running inside mdb.
5147
5148         * mini.c (mini_init): Call mini_debugger_init() if we're running
5149         inside the debugger.
5150
5151         * driver.c (mono_main): Moved the call to mini_debugger_init()
5152         into mini_init() to make this work when embedding Mono.
5153
5154         * debug-debugger.c (mini_debugger_init): Warn about duplicate
5155         calls to mini_debugger_init().
5156
5157         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
5158         mono_debugger_main() -> mini_debugger_main() and put them inside a
5159         `MONO_DEBUGGER_SUPPORTED' conditional.
5160
5161 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
5162
5163         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
5164         this is no longer in use.
5165         * mini.h: Same.
5166
5167 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
5168
5169         * mini-sparc.c (add_outarg_load): Fix the sparc build.
5170
5171         * aot-compiler.c (emit_method_code): Always write out C style symbols for
5172         methods.
5173
5174 2009-05-27  Martin Baulig  <martin@ximian.com>
5175
5176 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5177
5178         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
5179         long_conv_to_r_un to 64 bits.
5180
5181         * cpu-x86.md: Increase the instruction size due to the changes.
5182
5183         * iltests.il.in: Add regression test.
5184
5185         Fixes #467201.
5186
5187 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5188
5189         * objects.cs: Move the previous test from basic.cs to here.
5190
5191 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5192
5193         * basic.cs: Add regression test for #506915.
5194
5195 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5196
5197         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
5198         optimization we must check the bb of the first byte of stobj as
5199         it's the only one set in cil_offset_to_bb.
5200
5201         Fixes #506915.  
5202
5203 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5204
5205         * image-writer.c: Fix pointer directive on ppc64.
5206
5207 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
5208
5209         * image-writer.c (asm_writer_emit_section_change): Avoid using
5210         .bss subsections on ppc too.
5211
5212 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5213
5214         * image-writer.c: Fix the definition of TARGET_ASM_....
5215         
5216         * image-writer.c: Fix the emission of assembler directives in the last
5217         change.
5218
5219         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5220         exception throwing code to accomodate ppc64.
5221
5222         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5223         size to work on ppc64 too.
5224
5225         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5226         too.
5227
5228         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5229         the assembler dialect instead of using platform specific defines.
5230
5231 2009-05-22  Geoff Norton  <gnorton@novell.com>
5232
5233         * mini-arm.c (get_call_info): If a structure is split between the stack
5234         and argument registers, we should not advance the stack pointer by the entire
5235         native size, but just by the amount that spilled.
5236
5237 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5238
5239         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5240         correctly.
5241
5242 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5243
5244         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5245         wrappers normally.
5246         
5247         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5248         methods so wrapper don't get added twice.
5249         (add_generic_instances): Don't add methods of arrays.
5250
5251         * generics.cs: Mark one test as !FULLAOT.
5252
5253 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5254
5255         * mini-x86.c (emit_move_return_value): Remove unused vars.
5256
5257 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5258
5259         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5260         decomposing 8 bytes structs into a LCALL.
5261
5262         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5263         pointer for where to store the returned regs.
5264
5265         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5266         state the concern.
5267
5268         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5269
5270 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5271
5272         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5273         without getenv.
5274
5275 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5276
5277         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5278
5279         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5280         generics.
5281
5282 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5283
5284         * local-propagation.c (mono_local_cprop): Avoid local propagation
5285         across paired add/sub if the first instruction dest reg is it's
5286         source reg. For example:
5287
5288         int_add_imm R12 <- R12 [1] clobbers: 1
5289         int_sub_imm R42 <- R12 [1] clobbers: 1
5290
5291         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5292         maintain the math identify.
5293
5294         Fixes #505375.
5295
5296 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5297
5298         * Makefile.am: avoid going on the network just to get the revision,
5299         use git log instead
5300
5301 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5302
5303         Fixed estimate for short branches on amd64 (they were off mark, and
5304         enabling call prolog-epilog instrumentations caused assertions).
5305         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5306         estimate for the maximum length of this basic block.
5307         * mini-amd64.c:
5308         - mono_arch_emit_prolog: compute max_length for each basic block
5309           (instead of max_offset), and inflate size estimate also for entry bb
5310           in case of code instrumentation.
5311         - mono_arch_output_basic_block: get rid of "cpos" (the current
5312           estimated "position" in the code), and always use "offset" instead,
5313           which is accurate; at the beginning of the function quickly recompute
5314           max_offset for all the remaining blocks, starting from the current
5315           cfg->code_len (which is correct, and not estimated) and using the
5316           estimated block lengths computed previously.
5317
5318 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5319
5320         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5321         functions, it is already done in the caller.
5322
5323         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5324
5325         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5326         MONO_ARCH_GSHARED_SUPPORTED define.
5327
5328         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5329
5330         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5331         function.
5332
5333 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5334
5335         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5336         call to mono_marshal_get_rgctx_invoke ().
5337
5338         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5339         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5340         gshared use the static rgctx trampolines now.
5341         
5342         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5343         platform supports it.
5344
5345 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5346
5347         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5348
5349         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5350
5351 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5352
5353         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5354
5355         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5356         for ppc.
5357
5358 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5359
5360         Made it possible for mono_arch_instrument_epilog to preserve
5361         argument registers, otherwise instrumenting the "epilogue" before
5362         a tail call would clobber them.
5363         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5364         if like mono_arch_instrument_epilog but with an additional parameter
5365         that states if argument registers must be preserved.
5366         * mini.c: implemented mono_arch_instrument_epilog as a call to
5367         mono_arch_instrument_epilog_full without asking to preserve argument
5368         registers (this makes the existing code work as usual).
5369         * mini-amd64.c:
5370         - mono_arch_instrument_epilog: add parameter to transform it into
5371         mono_arch_instrument_epilog_full, and preserve argument registers
5372         when required.
5373         - mono_arch_output_basic_block, OP_TAILCALL case: call
5374         mono_arch_instrument_epilog_full.
5375         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5376         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5377         only transformed mono_arch_instrument_epilog into
5378         mono_arch_instrument_epilog_full.
5379
5380 2009-05-15  Geoff Norton  <gnorton@novell.com>
5381
5382         * mini-darwin.c: This works on arm now.
5383
5384 2009-05-14  Geoff Norton  <gnorton@novell.com>
5385
5386         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5387         embedding api.
5388
5389 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5390
5391         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5392         label names.
5393
5394         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5395         wrappers during full aot mode correctly.
5396
5397         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5398         methods correctly.
5399
5400         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5401         mono_metadata_type_hash ().
5402
5403 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5404
5405         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5406         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5407         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5408         Removed MONO_INST_BRLABEL from the instruction flags, and the
5409         remaining code that used it, because we do not support branches inside
5410         basic blocks (and branch target labels) anymore.
5411         * Makefile.am: As part of the above cleanup, remove reference to
5412         BURG files which don't exist anymore.
5413
5414 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5415
5416         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5417         osx.
5418
5419         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5420         to use mono_arch_throw_corlib_exception.
5421
5422         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5423         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5424
5425         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5426         domain mempool.
5427
5428         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5429
5430         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5431         for the got to make debugging easier and to avoid confusing it with the
5432         system got.
5433         
5434         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5435         method so a breakpoint can be set when using gdb.
5436
5437 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5438
5439         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5440         on mono_method_get_imt_slot ().
5441
5442         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5443         num_decodes variables.
5444
5445         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5446         change as it doesn't seem to work.
5447         
5448         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5449         wrappers.
5450
5451 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5452
5453         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5454         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5455
5456         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5457         builder when using full aot.
5458
5459         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5460         here, it is already handled.
5461         
5462         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5463         correctly for IMT.
5464
5465         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5466
5467         * mini-arm.h: Enable IMT for full aot.
5468         
5469         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5470         arch doesn't support it.
5471
5472         * mini.c (mini_init): Don't disable IMT for full aot if the
5473         architecture supports it.
5474
5475         * mini.h (MonoAotTrampoline): New enum containing the different types
5476         of 'numerous' trampolines.
5477         (MONO_AOT_FILE_VERSION): Bump this.
5478
5479         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5480         static rgctx trampolines. Add support for full-aot IMT thunks.
5481
5482         * mini-amd64.h: Enable IMT for full aot.
5483
5484         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5485         to exclude tests belonging to a category.
5486
5487         * generics.cs: Mark some tests with a !FULLAOT category.
5488
5489         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5490         generics tests.
5491
5492 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5493
5494         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5495         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5496         (emit_plt): Fix a warning.
5497
5498 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5499
5500         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5501         back into aot-compiler.c to a place where the other functions shared by
5502         the runtime and aot compiler are.
5503         
5504         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5505         as done previously, instead of in MonoAotFileInfo, since pointers might have
5506         alignment requirements.
5507
5508         * mini.h: Bump AOT file format version.
5509
5510 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5511
5512         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5513         that is used at runtime from the aot-compiler.c, this makes it
5514         work on setups that remove the AOT compiler from the output
5515         image. 
5516
5517 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5518
5519         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5520         PPC.
5521
5522         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5523
5524         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5525
5526         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5527         stuff to mono_arch_decompose_long_opts ().
5528         (mono_decompose_opcode): Remove some dead code.
5529
5530 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5531
5532         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5533         cmethod can be null for quite a some reasons.
5534
5535 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5536
5537         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5538
5539 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5540
5541         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5542
5543 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5544
5545         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5546         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5547         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5548         calls returning structures by addr on amd64.
5549
5550         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5551
5552         * iltests.il.in: Restructure the tail call tests a bit.
5553         
5554 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5555
5556         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5557         for virtual methods too.
5558
5559 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5560
5561         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5562         due to regression in verifying System.dll.
5563
5564 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5565
5566         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5567         in dynamic methods.
5568
5569         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5570         instances.
5571
5572         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5573         g_str_hash () which can change.
5574
5575         * driver.c (mini_regression): Disable optimizations not supported by
5576         the cpu. Fixes #500019.
5577
5578         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5579         build.
5580
5581 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5582
5583         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5584         to the latest LLVM code.
5585
5586 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5587
5588         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5589
5590 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5591
5592         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5593         x86/amd64.
5594
5595         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5596         no longer saving offsets, so just save the patch types along with the other
5597         info.
5598         * aot-runtime.c (load_patch_info): Update after the changes to 
5599         encode_patch_list ().
5600         (decode_got_entry): Removed, merged into load_patch_info ().
5601         (is_shared_got_patch): Removed, call the same function from
5602         aot-compiler.c.
5603
5604         * mini.h: Bump aot file format version.
5605         
5606         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5607         half-finished no-dlsym code.
5608
5609         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5610         option.
5611
5612         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5613         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5614
5615 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5616
5617         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5618         buffer length to work with AOT code.
5619
5620         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5621         ldfld/stfld opcodes.
5622
5623         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5624         as it is not used.
5625
5626         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5627
5628         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5629
5630         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5631         LLVM API.
5632
5633         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5634         if needed. Don't decompose long operations when using llvm.
5635
5636 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5637
5638         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5639         PAGESIZE constant.
5640
5641         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5642
5643 2009-05-03  Martin Baulig  <martin@ximian.com>
5644
5645         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5646         mono_debugger_insert_method_breakpoint() since the class init
5647         handler we're inserting at the top of the method already gives us
5648         a notification.
5649
5650 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5651
5652         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5653         to mono_arch_decompose_long_opts () for x86 and arm.
5654
5655 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5656
5657         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5658         TARGET_AMD64 here.
5659
5660 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5661
5662         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5663         JIT code.
5664
5665 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5666
5667         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5668         number of trampolines used in full-aot mode.
5669
5670         * aot-compiler.c: Add an ntrampolines option to set the number of 
5671         trampolines emitted in full-aot mode.
5672
5673 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5674
5675         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5676         a volatile load. Get rid of get_tempname (), llvm assigns names
5677         automatically.
5678
5679         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5680         builder function.
5681
5682         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5683         a value.
5684
5685         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5686         level 1.
5687
5688         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5689         to the same register as a fixed sreg2. Fixes #497271.
5690
5691         * iltests.il.in: Add a new test.
5692
5693 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5694
5695         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5696         stack, since pushes complicate exception handling.
5697
5698         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5699         the stack if they are passed using moves.
5700
5701         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5702
5703         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5704         when using llvm.
5705
5706         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5707         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5708         of FMOVE if it is an R4.
5709
5710 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5711
5712         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5713
5714         * mini.h (LLVMCallInfo): New structure to store calling convention 
5715         information for the LLVM back end similar to the CallInfo structures in 
5716         the back-ends.
5717
5718         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5719         call information in a format usable by LLVM.
5720         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5721
5722         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5723         mono_llvm_emit_call () when compiling using LLVM.
5724
5725         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5726         comments to all functions. Fix memory leaks. Add a public init/cleanup
5727         function.
5728
5729         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5730
5731         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5732         mono_array_new_va () jit icall.
5733         
5734 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5735
5736         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5737         multiple machine description files to be specified.
5738         * mini-ops.h: fixes for cross-compilation.
5739
5740 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5741
5742         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5743         some porting work.
5744
5745 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5746
5747         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5748         to prevent asserts in various passes. Fixes #497220.
5749
5750 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5751
5752         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5753         a racy assert.
5754
5755         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5756         table to avoid duplicates.
5757
5758         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5759         
5760         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5761         option is used.
5762
5763 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5764
5765         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5766         is for method or field access.
5767
5768 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5769
5770         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5771         a Value to stdout.
5772
5773         * mini-llvm.c (mono_llvm_emit_method): Use it.
5774         
5775         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5776         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5777         on volatile values.
5778
5779         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5780         synchronized methods.
5781
5782         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5783
5784         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5785
5786         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5787         OP_LOADI8_MEM.
5788
5789         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5790         allowing some options to be set dynamically.
5791
5792 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5793
5794         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5795         unconditional branch.
5796
5797         * mini.h (MonoTrampolineType): Add new trampoline type 
5798         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5799         compiled code.
5800
5801         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5802         function.
5803
5804         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5805         creation function.
5806
5807         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5808         is enabled. Instead, use the llvm vcall trampoline.
5809         
5810         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5811
5812         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5813         
5814         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5815         functions.
5816
5817         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5818         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5819
5820         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5821         OP_IA64_CSET opcode.
5822
5823         * mini.c: Fix a warning.
5824
5825         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5826         THROW to the appropriate llvm type.
5827
5828 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5829
5830         * mini.c (mini_method_compile): Add statistics for methods JITted
5831         with/without LLVM.
5832
5833 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5834
5835         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5836         OP_IA64_CMP_<cond>_IMM opcodes.
5837
5838 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5839
5840         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5841         corlib exceptions.
5842
5843         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5844         correctly.
5845
5846         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5847         GENERICINST.
5848
5849 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5850
5851         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5852
5853 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5854
5855         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5856         support.
5857
5858         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5859         rgctx invoke trampolines for x86.
5860
5861         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5862         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5863         (mono_arch_get_vcall_slot): Simplify this.
5864
5865 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5866
5867         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5868         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5869
5870 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5871
5872         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5873         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5874
5875         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5876
5877         * liveness.c (visit_bb): Remove a needless assert.
5878
5879 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5880
5881         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5882         full aot support to the arch specific code.
5883
5884         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5885
5886         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5887
5888         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5889         
5890         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5891         collect information about the delegate invoke impl trampolines.
5892
5893         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5894         to save trampolines during full-aot mode.
5895
5896         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5897         creation function which returns a trampoline which sets the rgctx
5898         argument.
5899         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5900         wrapper if possible.
5901         (mono_delegate_trampoline): Ditto.
5902
5903         * mini.c (mono_jit_runtime_invoke): Ditto.
5904
5905         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5906         
5907         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5908
5909         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5910         
5911 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5912
5913         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5914         just setting the opcode to OP_NOP.
5915
5916 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5917
5918         * mini.c (mini_method_compile): Put the last change inside an 
5919         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5920         
5921         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5922         and extend live ranges to cover the whole method when using xdb.
5923
5924         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5925         do it in the trampolines.
5926
5927         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5928         needed.
5929
5930         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5931         
5932         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5933         call code in full-aot mode since IMT is disabled there.
5934         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5935         new JIT no longer has that restriction.
5936
5937         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5938
5939         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5940         a more compact format.
5941         (mono_aot_wrapper_name): New function to return a unique name for a
5942         wrapper method, also used by the AOT runtime.
5943
5944         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5945         aot-compiler.c.
5946
5947         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5948         when a ICollection<T> etc is encountered.
5949         (add_generic_instances): Process method arguments/locals too.
5950         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5951         trampoline names.
5952
5953         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5954         
5955 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5956
5957         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5958
5959         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5960
5961         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5962         representing the result of the decomposition. Nullify instructions
5963         instead of setting them to OP_NOP since nops can't have registers
5964         set.
5965
5966 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5967
5968         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5969         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5970         info. Strip 'mapping symbols' on ARM.
5971
5972         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5973         
5974         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5975         this with the native genmdesc.
5976
5977 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5978
5979         * aot-runtime.c:  Fixing the MSVC build.
5980
5981         Code is contributed under MIT/X11 license.
5982
5983 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5984
5985         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5986         JITted code depends on it.
5987
5988 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5989
5990         * aot-compiler.c: Use new MonoGenericParam accessors.
5991
5992 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5993
5994         Reduce memory usage and improve correctness wrt MonoGenericParam
5995         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5996         handing.  Avoid allocating MonoGenericParams, but use the ones in
5997         the container itself.
5998
5999 2009-04-07  Miguel de Icaza  <miguel@novell.com>
6000
6001         * tasklets.c: Return exceptions in the out argument.
6002
6003 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
6004
6005         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
6006         opcode. Use pointer types in more places instead of casting them to 
6007         integers.
6008
6009         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
6010         optimizations.
6011         (mono_llvm_optimize_method): New helper function to optimize a method.
6012
6013         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
6014         widening code so it could be called from more places.
6015         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
6016         code paths in the call opcodes.
6017
6018 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
6019
6020         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
6021
6022 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
6023
6024         * dwarfwriter.c: Use _ to separate class name 
6025         components as gdb can't handle '.'. Represent reference variables
6026         as 'class <NAME>&'.
6027         
6028         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
6029
6030         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
6031         
6032         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
6033
6034         * gc-test.cs: New file with GC stack marking tests.
6035         
6036         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
6037         negative numbers for vfp.
6038
6039         * basic-float.cs: Add a test.
6040         
6041 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
6042
6043         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
6044
6045 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
6046
6047         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
6048         part of tasklet/continuation support.
6049
6050 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
6051
6052         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
6053         amd64 opcodes inside an ifdef.
6054
6055         * dwarfwriter.c: Emit inheritance information for classes, emit fields
6056         of complex types.
6057         
6058         * dwarfwriter.c (emit_type): Emit the class info for classes.
6059
6060 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
6061
6062         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
6063
6064         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
6065
6066         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
6067
6068         * ssa.c (mono_ssa_compute): Fix some memory leaks.
6069
6070 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
6071
6072         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
6073
6074         * mini-llvm.c: Update comments.
6075
6076         * mini.h (COMPILE_LLVM): New macro.
6077
6078         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
6079
6080         * ssa.c (mono_ssa_compute): Ditto.
6081         
6082         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
6083         the unwind ops from a DWARF FDE.
6084
6085         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
6086         methods by extracting the dwarf unwind ops from the unwind info generated
6087         by LLVM.
6088         
6089         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
6090         calls.
6091
6092         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
6093         addressing modes.
6094
6095 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
6096
6097         * Makefile.am (llvm_sources): Enable this.
6098
6099         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
6100         failing back to the JIT if something cannot be handled.
6101
6102         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
6103         compiling with LLVM.
6104
6105         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
6106         compiling with LLVM.
6107
6108         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
6109         compiling with LLVM.
6110
6111         * mini-ops.h: Add a few opcodes needed by LLVM.
6112
6113         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
6114         has no unwind info.
6115
6116         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
6117         backend.
6118
6119         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
6120
6121         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
6122
6123 2009-04-01  Mark Probst  <mark.probst@gmail.com>
6124
6125         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
6126         ridiculously large methods.
6127
6128 2009-03-31  Martin Baulig  <martin@ximian.com>
6129
6130         * debug-debugger.c (debugger_remove_breakpoint): Call
6131         mono_debugger_remove_class_init_callback ().
6132
6133 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
6134
6135         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
6136         right before emitting code, not at the start.
6137
6138         * mini.c (mono_postprocess_patches): Extract this into a separate function
6139         from mono_codegen ().
6140
6141         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
6142         byref types correctly.
6143
6144 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
6145
6146         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
6147         by the last change.
6148
6149 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
6150
6151         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
6152         indirect calls, this avoids problems where get_vcall_slot () would get
6153         confused by the native code for the instruction preceeding the call.
6154         (mono_arch_get_vcall_slot): Simplify this.
6155         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
6156
6157         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
6158         register allocator now seems to depend on them instead of the data in
6159         cpu-<ARCH>.md.
6160
6161         * mini.c (mini_method_compile): Throw the correct type of exception if
6162         mono_method_get_header () fails because of a loading error.
6163
6164 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
6165
6166         * mini.c (mini_method_compile): Clear the loader error if the method
6167         header cannot be decoded.
6168
6169         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
6170         interface methods on proxies correctly.
6171
6172         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
6173         this argument for vtype methods. Add precise liveness info for arguments.
6174
6175         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
6176         LIVERANGE_START/END opcodes.
6177
6178         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
6179         for arguments and values in registers.
6180
6181 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
6182
6183         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
6184         return a valuetype. Fixes #487518.
6185
6186         * iltests.il: Add a test.
6187         
6188         * aot-compiler.c: Use mono_thread_create () to create helper threads.
6189
6190         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
6191         closed over a null reference correctly.
6192
6193 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6194
6195         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
6196
6197 2009-03-25  Mark Probst  <mark.probst@gmail.com>
6198
6199         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
6200         allocated to the same registers as fixed sregs.
6201
6202 2009-03-24  Mark Probst  <mark.probst@gmail.com>
6203
6204         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
6205         ATOMIC_CAS_IMM ops.
6206
6207         * method-to-ir.c: Handle more cases for
6208         Interlocked.CompareExchange.
6209
6210         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6211         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6212         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6213
6214 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6215
6216         * aot-runtime.c (decode_method_ref): Fix a warning.
6217
6218         * unwind.c (mono_unwind_frame): Ditto.  
6219
6220 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6221
6222         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6223         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6224
6225         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6226         fix the handling of large values in the ALU_PC_G0_NC relocation.
6227
6228 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6229
6230         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6231
6232 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6233
6234         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6235         ops.
6236
6237 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6238
6239         * method-to-ir.c: MINI_OP3 needs a comma.
6240
6241         * method-to-ir.c, mini.h, mini.c: Remove
6242         mono_init_op_sreg_counts ().
6243
6244 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6245
6246         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6247         OP_JMP.
6248         
6249         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6250         assertion.
6251
6252         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6253
6254         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6255         code somewhat.
6256
6257 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6258
6259         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6260         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6261         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6262         operations.
6263
6264 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6265
6266         * driver.c: Change location of gc_wrapper.h.
6267
6268         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6269         inside finally clauses correctly. Fixes #485721.
6270
6271         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6272         after the change above.
6273
6274         * exceptions.cs: Add a test.
6275         
6276 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6277
6278         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6279
6280         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6281         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6282         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6283
6284         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6285         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6286
6287 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6288
6289         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6290         Simplify logic for ensure_method_is_allowed_to_call_method. 
6291         Handle wrappers on callers.
6292
6293 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6294
6295         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6296         them don't run yet.
6297
6298         * basic-simd.cs: Fix the names of some test methods.
6299
6300 2009-03-18  Geoff Norton  <gnorton@novell.com>
6301
6302         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6303
6304 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6305
6306         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6307
6308 2009-03-17  Jb Evain  <jbevain@novell.com>
6309
6310         * driver.c: remove now uneeded call to mono_gc_base_init before
6311         mono_profiler_load.
6312
6313 2009-03-17  Jb Evain  <jbevain@novell.com>
6314
6315         * dwarfwriter.c (token_handler): handle more cases.
6316
6317 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6318
6319         * method-to-ir.c: Remove more dead code (that was required only
6320         because of method_is_safe). Fix compiler warnings.
6321
6322 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6323
6324         * method-to-ir.c: Remove unneeded/useless method_is_safe
6325         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6326
6327 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6328
6329         * mini.c (mini_method_compile): Print the method been compiled with
6330         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6331         for people not familiar with the runtime.
6332
6333 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6334
6335         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6336         a managed object which is later put into a GList. Return its class instead.
6337
6338         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6339         stack slots when using sgen.
6340
6341 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6342
6343         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6344
6345 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6346
6347         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6348         > so it works on the first vreg as well.
6349
6350 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6351
6352         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6353         trigger randomly.
6354
6355         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6356         
6357         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6358         implement GArray.
6359
6360 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6361
6362         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6363         native->IL offset mapping.
6364
6365 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6366
6367         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6368
6369         * basic.cs: Add a test.
6370
6371 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6372
6373         * mini-x86.c (mono_arch_output_basic_block): Use different
6374         registers in case the ones we want to overwrite are used by the
6375         other operand.  Fixes regression in #480807.
6376
6377 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6378
6379         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6380
6381         * dwarfwriter.c (emit_line_number_info): The line number info for
6382         IL code was off by one. Fix that.
6383
6384         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6385         stack.
6386
6387 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6388
6389         Contributed under the terms of the MIT/X11 license by Steven
6390         Munroe <munroesj@us.ibm.com>.
6391
6392         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6393         Fixes #483462.
6394
6395 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6396
6397         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6398         as well.
6399
6400 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6401
6402         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6403         the delegate ctor handling code. Fixes #482638.
6404         
6405         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6406         #481458.
6407
6408         * iltests.il.in: Add a test.
6409         
6410         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6411         mini-posix.c.
6412
6413 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6414
6415         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6416         is shared generic code, return the trampoline, even if the method
6417         has already been compiled.  Fixes #479763.
6418
6419         * mini.c, mini.h: New function
6420         mono_jit_find_compiled_method_with_jit_info() which is the same as
6421         mono_jit_find_compiled_method() but also returns the jit info.
6422
6423 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6424
6425         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6426         for methods which actually have one.  For all other methods, make
6427         sure the this argument var is live the whole method.
6428
6429         * mini.c (mini_method_compile): Every shared method has a
6430         this/vtable/mrgctx info.  Fixes #480807.
6431
6432 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6433
6434         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6435         generic/imt thunks where some entries branch through the vtable,
6436         while other entries branch directly.
6437
6438 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6439
6440         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6441
6442         * mini-windows.c: Ditto.
6443         
6444         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6445         ctors.
6446
6447 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6448
6449         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6450         down an assert.
6451
6452 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6453
6454         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6455         #481403.
6456
6457 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6458
6459         * exceptions-x86.c: Include debug-mini.h - fixes build.
6460
6461 2009-03-04  Martin Baulig  <martin@ximian.com>
6462
6463         * debug-mini.c: Clean up the exception API and add documentation.
6464         (mono_debugger_handle_exception): New public method; this is
6465         called when throwing an exception or encountering an unhandled one.
6466         (mono_debugger_call_exception_handler): Formerly known as
6467         mono_debugger_handle_exception(); this is used to tell the
6468         debugger that we're about to invoke an exception handler.
6469
6470 2009-03-04  Martin Baulig  <martin@ximian.com>
6471
6472         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6473         ../metadata/mono-debug-debugger.c; save and reset exception state.
6474
6475 2009-03-02  Martin Baulig  <martin@ximian.com>
6476
6477         * debug-mini.c: Moved the debugger exception handling here from
6478         ../metadata/mono-debug-debugger.c.
6479
6480         * debug-mini.h
6481         (MonoDebuggerExceptionAction): New exception typedef.
6482
6483         * debug-mini.c
6484         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6485
6486         * exceptions-amd64.c
6487         (mono_amd64_throw_exception): Use the new debugger exception
6488         handling code.
6489
6490         * mini-exceptions.c
6491         (mono_handle_exception_internal): Don't call
6492         mono_debugger_unhandled_exception() here.
6493
6494 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6495
6496         * mini.c aot-compiler.c: Update after the changes to 
6497         mono_marshal_get_runtime_invoke ().
6498
6499         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6500         Virtual generic methods might not have method->slot set, work around
6501         that.
6502
6503         * generics.cs: Add a test.
6504
6505 2009-03-02  Geoff Norton  <gnorton@novell.com>
6506
6507         * mini.c:
6508         * driver.c: Allow signal chaining of SIGFPE as well.
6509
6510 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6511
6512         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6513         this since it now receives the method not its generic context in the
6514         IMT reg.
6515
6516         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6517         generic/imt thunks where some entries branch through the vtable, while
6518         other entries branch directly.
6519
6520         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6521
6522         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6523         support for interface methods as well.
6524
6525         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6526         using the normal IMT thunks.
6527
6528         generics.cs: Add new tests.
6529         
6530         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6531         the generic inst to the generic imt thunks. This fixes AOT support, 
6532         improves consistency with the normal IMT thunks, and makes it easier to
6533         add support for interface generic virtual methods later.
6534
6535         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6536         
6537 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6538
6539         * driver.c (mono_set_signal_chaining): New public API function to enable
6540         signal chaining on POSIX platforms.
6541
6542         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6543         (si@lindenlab.com) to implement signal chaining. The original patch was
6544         contributed under the MIT X/11 license:
6545         https://bugzilla.novell.com/show_bug.cgi?id=318894
6546
6547 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6548
6549         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6550         too until it can be made to run on amd64.
6551
6552 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6553
6554         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6555         to  get_generic_context_from_code () + get_call_info () if possible.
6556
6557 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6558
6559         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6560         suspend-on-sigsegv functionality.
6561
6562         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6563         to suspend when a native SIGSEGV is received. This is useful for debugging
6564         crashes which don't happen under gdb, since a live process contains more
6565         information than a core file.
6566
6567         * mini-exceptions.c (mono_print_thread_dump): Use 
6568         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6569
6570         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6571
6572         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6573         
6574         * basic-float.cs: Disable the tests which currently fail on amd64.
6575
6576         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6577         value to mono_arch_patch_callsite () to fix crashes.
6578         
6579         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6580
6581 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6582
6583         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6584         nop code by patching the call address to point to the nullified class init
6585         trampoline, as the former does not seem to be safe on SMP machines.
6586
6587 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6588
6589         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6590         they were wrong.
6591
6592 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6593
6594         * basic-float.cs basic-calls.cs: Fix warnings.
6595
6596 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6597
6598         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6599         correct frame pointer in the LMF.  Should fix #478394.
6600
6601 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6602
6603         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6604
6605         * image-writer.c: Make the binary writer less verbose.
6606
6607 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6608
6609         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6610         are called from runtime invoke wrappers.
6611
6612 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6613
6614         * cpu-ppc.md (store_memindex): Increase the size of this.
6615
6616 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6617
6618         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6619
6620         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6621
6622         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6623         OP_LCONV_TO_R_UN.
6624
6625         Last fix for of #467201.
6626
6627
6628 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6629
6630         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6631
6632         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6633         and long_conv_to_r8_2:
6634
6635         Fixed part of #467201.
6636
6637 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6638
6639         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6640
6641         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6642         conversion to 32 bits.
6643
6644         * cpu-x86.md: Increase the size of int_conv_to_r4.
6645
6646         * basic-float.cs: Add a test for this.
6647
6648         Fixed part of #467201.
6649
6650 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6651
6652         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6653
6654         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6655         conversion to 64 bits.
6656
6657         * basic-float.cs: Add a test for this.
6658
6659         Fixed part of #467201.
6660
6661 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6662
6663         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6664
6665         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6666         This behavior is compatible with MS.
6667
6668         * iltest.il.in: Add a test for this.
6669
6670         Fixed part of #467201.
6671
6672 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6673
6674         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6675
6676         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6677         change the precision of the value.
6678
6679         * cpu-x86.md: Define len for float_conv_to_r4.
6680
6681         * basic-float.cs: Add a test for this.
6682
6683         Fixed part of #467201.
6684
6685 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6686
6687         * mini.c: Adjust locking order to the new semantics where the loader lock
6688         comes first.
6689
6690 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6691
6692         * aot-runtime.c:
6693         * mini-amd64.c:
6694         * mini-arm.c:
6695         * mini-ia64.c:
6696         * mini-mips.c:
6697         * mini-ppc.c:
6698         * mini-sparc.c:
6699         * mini-trampolines.c:
6700         * mini-x86.c:
6701         * mini.c:
6702         * tramp-alpha.c:
6703         * tramp-amd64.c:
6704         * tramp-arm.c:
6705         * tramp-hppa.c:
6706         * tramp-ia64.c:
6707         * tramp-mips.c:
6708         * tramp-ppc.c:
6709         * tramp-s390.c:
6710         * tramp-s390x.c:
6711         * tramp-sparc.c:
6712         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6713
6714 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6715
6716         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6717         as it is incorrect.
6718
6719 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6720
6721         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6722         for cctors if needed.
6723
6724 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6725
6726         * mini-ppc.c: Fix build on Darwin.
6727
6728 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6729
6730         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6731         version instead of 3 as valgrind doesn't like version 3.
6732
6733         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6734
6735         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6736         usable for hashing methods.
6737         (emit_extra_methods): Use the new hash to avoid putting every method in the
6738         same hash bucket.
6739
6740         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6741
6742         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6743         whenever a method ref could match a method.
6744         
6745         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6746         test to fail.
6747         
6748         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6749         methods refs.
6750
6751         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6752
6753         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6754         the encoding buffer.
6755
6756         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6757         mono_method_get_header () on inflated methods as an optimization.
6758
6759 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6760
6761         * ssa.c (fold_ins): Fix another crash if the instruction following the
6762         switch was optimized away.
6763
6764 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6765
6766         Contributed under the terms of the MIT/X11 license by Steven
6767         Munroe <munroesj@us.ibm.com>.
6768
6769         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6770
6771 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6772
6773         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6774         around the mono_domain_alloc calls, it is now done by the functions
6775         themselves.
6776
6777         * aot-compiler.c (compile_method): Only add wrappers referenced by
6778         the method if compiling with full AOT.
6779         (mono_compile_assembly): Error out if --aot=full is specified on
6780         a platform where it is not supported.
6781
6782         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6783         on ARM too.
6784
6785         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6786         AOT support.
6787
6788         * aot-runtime.c (load_named_code): Handle 
6789         mono_arm_throw_exception_by_token.
6790
6791         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6792
6793         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6794         unaligned.
6795
6796         * Makefile.am (fullaotcheck): Exit if a test fails.
6797
6798         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6799         on ARM.
6800         (mono_compile_assembly): Handle the assembler failing.
6801
6802         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6803         accepting subsections of .bss.
6804
6805         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6806         was optimized away.
6807
6808         * aot-compiler.c: Remove some unused includes.
6809         
6810         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6811         now in MonoImageWriter.
6812
6813         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6814         code sequence which matches a non-virtual call. Fixes #472654.
6815
6816 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6817
6818         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6819         xdebug code.
6820         
6821         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6822         use the image/dwarf writers directly.
6823
6824         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6825         field.
6826
6827         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6828         MonoDwarfWriter.
6829
6830         * image-writer.h: Fix some typos.
6831
6832         * dwarfwriter.h dwarfwriter.c: New files.
6833         
6834         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6835         separate module.
6836
6837         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6838         argument to return unwind info.
6839
6840         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6841
6842         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6843         
6844         * aot-runtime.c (decode_method_ref): Add a case for 
6845         MONO_AOT_METHODREF_WRAPPER_NAME.
6846
6847         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6848         for AOT.
6849
6850         * aot-compiler.c (encode_method_ref): Use the new constants.
6851
6852         * aot-runtime.c (decode_method_ref): Ditto.
6853
6854         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6855         be compiled, not the icall itself.
6856
6857 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6858
6859         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6860         using decode_method_ref ().
6861
6862         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6863         convert it to an in32. Fixes #475859.
6864
6865         * arrays.cs: Add a test.
6866
6867 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6868
6869         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6870         OP_LCONV_TO_U2.
6871
6872         * basic-long.cs: Add a test.
6873
6874 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6875
6876         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6877         remove the frame pointer in leaf methods which don't receive any
6878         arguments, don't throw exceptions and don't do dynamic stack
6879         allocations.
6880
6881 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6882
6883         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6884         the fail_tramp changes. Hopefully fixes #475132.
6885
6886 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6887
6888         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6889         instead of mono_metadata_signature_dup_full.
6890
6891 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6892
6893         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6894         for processing jump tables. Fixes #473787.
6895
6896 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6897
6898         * mini-generic-sharing.c: mini_method_get_context() just calls
6899         mono_method_get_context_general() now.
6900
6901         * mini.c, mini.h: Moved get_object_generic_inst(),
6902         construct_object_context_for_method() and
6903         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6904
6905 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6906
6907         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6908         basic block fell through to its successor bblock without a branch. Fixes
6909         #474718.
6910
6911         * iltests.il.in: Add a test.
6912         
6913         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6914         (can_encode_patch): We can now handle arrays of generic parameters and
6915         array methods.
6916
6917         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6918
6919         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6920         the AOT file to avoid some #ifdefs in aot-runtime.c
6921
6922         * mini.h: Bump AOT file format version.
6923
6924 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6925
6926         * Makefile.am (fullaotcheck): Make this run the tests.
6927
6928         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6929
6930 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6931
6932         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6933         individually.  Fixes #473482.
6934
6935 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6936
6937         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6938
6939 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6940
6941         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6942         (mono_compile_assembly): Hush compile warnings about
6943         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6944         code path.
6945
6946 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6947
6948         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6949
6950         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6951
6952         * aot-compiler.c: Fix arm support.
6953
6954         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6955         img_writer_emit_unset_mode () function.
6956
6957         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6958         (mono_unwind_get_dwarf_pc_reg): Ditto.
6959
6960         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6961         Move almost all platform specific code to a set of arch_ functions, 
6962         and document them to ease porting.
6963         
6964         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6965
6966         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6967
6968         * aot-compiler.c: Extract the image writing functionality into a separate
6969         module to reduce the size of this file.
6970
6971 2009-02-09  Geoff Norton  <gnorton@novell.com>
6972
6973         * mini-s390.c: Fix the signature of emit_sig_cookie.
6974
6975 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6976
6977         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6978
6979         * aot-runtime.c (is_shared_got_patch): Ditto.
6980
6981         * aot-runtime.c (load_named_code): Cope with the fact that 
6982         decode_got_entry () won't decode the patch fully if its corresponding got
6983         entry is already filled.
6984         
6985         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6986         Initialize *ji.
6987         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6988
6989         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6990         as the moving pointer instead of 'buf' for consistency with the rest of the
6991         codebase.
6992         (mono_arch_create_monitor_exit_trampoline): Ditto.
6993
6994         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6995         generic_class_init trampolines.
6996         (add_generic_class): Extract some code from add_generic_instances () into a
6997         separate function so it can be called from other places too.
6998         (compile_method): Call add_generic_class () for the classes of inflated methods
6999         referenced by the method.
7000         (can_encode_patch): Allow references to generic parameters.
7001
7002         * aot-runtime.c: Add support the patches required by the new trampolines.
7003         
7004         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
7005         support.
7006
7007         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
7008         full-aot support.
7009
7010         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
7011         this from get_throw_pending_exception, make the signature full aot compatible.
7012
7013         * Makefile.am (fullaotcheck): New target to run full-aot tests.
7014
7015         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
7016
7017         * exceptions.cs: Add a test.
7018
7019 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
7020
7021         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
7022         use the DWARF_DATA_ALIGN constant instead.
7023
7024         * exception-<ARCH>.c: Update after the above change.
7025
7026         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
7027         dwarf unwinder.
7028
7029         * mini-arm.c: Enable the dwarf unwinder.
7030
7031         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
7032         instead of mono_class_setup_vtable ().
7033
7034 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
7035
7036         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
7037         dwarf unwinder.
7038
7039         * mini-x86.h: Enable the dwarf unwinder.
7040
7041 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
7042
7043         Fix mcs/tests/test-7.cs
7044         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
7045         2009-02-03.
7046
7047 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
7048
7049         * mini.c (print_jit_stats): Remove some unused statistics.
7050
7051 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7052
7053         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
7054
7055 2009-02-05  Mark Probst  <mark.probst@gmail.com>
7056
7057         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
7058         the method we get from mono_object_get_virtual_method() because
7059         that function does it properly, now.
7060
7061 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7062
7063         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
7064         opcodes. Fixes #472775.
7065
7066 2009-02-05  Mark Probst  <mark.probst@gmail.com>
7067
7068         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
7069         fact that mono_find_jit_info() sometimes returns the context
7070         corresponding to the jit info in new_ctx.  Fixes #472600.
7071
7072 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7073
7074         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
7075         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
7076         klass->enum_basetype directly.
7077
7078         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
7079         enum subtypes.
7080
7081         * unwind.c: Avoid 0 sized arrays.
7082
7083 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7084
7085         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
7086         size on systems with 64k pages. Fixes #471389.
7087
7088 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7089
7090         Contributed under the terms of the MIT/X11 license by Steven
7091         Munroe <munroesj@us.ibm.com>.
7092
7093         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
7094         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
7095         necessary.
7096
7097 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7098
7099         Contributed under the terms of the MIT/X11 license by Steven
7100         Munroe <munroesj@us.ibm.com>.
7101
7102         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
7103         comparison fix.
7104
7105         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
7106         The trampoline can be longer on PPC64.
7107
7108 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7109
7110         Contributed under the terms of the MIT/X11 license by Steven
7111         Munroe <munroesj@us.ibm.com>.
7112
7113         * mini-ppc.c: Compiler warning fixes and trivial code
7114         simplifications.
7115
7116 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7117
7118         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
7119         ins->dreg which could be a hardware register, not a vreg.
7120
7121         * aot-compiler.c (emit_method_dwarf_info): Ditto.
7122         
7123         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
7124         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
7125
7126         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
7127         
7128         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
7129         ->dreg, that is not the vreg we are looking for.
7130
7131         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
7132
7133         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
7134         LIVERANGE_END.
7135
7136         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
7137         strange crashes.
7138
7139 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
7140
7141         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
7142
7143         * aot-compiler.c (emit_line_number_info): Fix line number emission when
7144         the line diff is 0.
7145
7146         * aot-compiler.c: Add xdebug support on x86.
7147
7148         * unwind.c: Add x86 support.
7149         
7150         * aot-compiler.c (emit_exception_debug_info): Control the emission of
7151         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
7152
7153         * mini.c (mini_method_compile): Ditto.
7154         
7155         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
7156         the variable index.
7157
7158         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
7159         which mimic .push_section/.pop_section in GAS.
7160         
7161         * aot-compiler.c: Emit precise live range information for variables.
7162
7163         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
7164
7165         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
7166         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
7167         them.
7168
7169         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
7170         the live ranges of variables.
7171
7172         * mini.h (struct MonoMethodVar): Add two fields containing the live range
7173         of the variable in terms of native offsets.
7174
7175 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
7176
7177         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
7178         
7179 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7180
7181         Contributed under the terms of the MIT/X11 license by Steven
7182         Munroe <munroesj@us.ibm.com>.
7183
7184         * exceptions-ppc.c (restore_regs_from_context): Correct operand
7185         order (offset then base reg) for ppc_load_multiple_regs.
7186         (emit_save_saved_regs) Correct operand order for
7187         ppc_store_multiple_regs.
7188         (mono_arch_get_call_filter): Correct operand order for
7189         ppc_load_multiple_regs.
7190
7191         * mini-ppc.c (emit_memcpy): Fix operand order for
7192         ppc_load_reg_update and ppc_store_reg_update.
7193         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
7194         (mono_arch_emit_epilog): Correct operand order for
7195         ppc_load_multiple_regs.
7196
7197         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
7198         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
7199
7200 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7201
7202         * cpu-ppc64.md: Fixed storer4_memindex length.
7203
7204 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
7205
7206         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
7207         line number info.
7208         
7209         * aot-compiler.c (emit_line_number_info): Optimize this.
7210
7211 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7212
7213         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7214         
7215         * aot-compiler.c: Add debug info for methods without debug info by
7216         emitting an IL file and having the line number info referencing that file.
7217
7218         * aot-compiler.c: Optimize the size of the generated line number info.
7219
7220         * aot-compiler.c: Emit line number info in xdebug mode.
7221
7222         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7223         million arguments.
7224
7225 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7226
7227         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7228
7229         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7230         is used.
7231
7232 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7233
7234         * basic-calls.cs: Test for the weird crash found on arm.
7235         
7236 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7237
7238         * cpu-arm.md: Increase the size of storer8_membase_reg and
7239         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7240
7241         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7242         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7243         reg to LR otherwise we'll be loading/storing from just the offset.
7244
7245 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7246
7247         Question: if we are storing gint32's inside the "*native_offset",
7248         should we change the signature to "gint32 *native_offset" to
7249         ensure that we do not have type definition problems?
7250         
7251         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7252         an int * as this is what the other function expects, causes
7253         problems with Freescale's compiler that defined int32_t to be a
7254         long and makes int incompatible 
7255
7256 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7257
7258         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7259         filename conflict with bjam.
7260
7261 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7262
7263         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7264         as it might use decomposed ops.
7265
7266 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7267
7268         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7269
7270         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7271         is defined.
7272
7273         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7274
7275         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7276         offsets.
7277
7278         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7279         way registers are stored in MonoContext on arm.
7280
7281         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7282         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7283
7284         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7285
7286         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7287
7288         * mini.c (mini_init): Register mono_isfinite.
7289
7290         * jit-icalls.c (mono_isfinite): New jit icall.
7291
7292         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7293         
7294         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7295         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7296         the parent frame.
7297
7298 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7299
7300         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7301         separate frame and stack pointers, so we must use FP to find the register
7302         spill area.
7303         The FP reg is retrieved from the MonoContext::regs array.
7304
7305 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7306
7307         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7308         as FPA requires it.
7309
7310 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7311
7312         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7313         return R4 and R8 when not running under softfloat.
7314
7315         Fixes basic-calls.exe
7316
7317 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7318
7319         * mini-arm.c: Implement some overflow opcodes.
7320
7321 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7322
7323         * ssa.c: handle another alloca.h
7324
7325         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7326         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7327         MONO_ARCH_USE_SIGACTION. 
7328
7329         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7330         capability defines.
7331
7332         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7333
7334         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7335         PPC targets as sigaction does not exist on all platforms, define
7336         this on a per-platform basis.
7337
7338         Instead of erroring out if the platform is not defined, include
7339         mini-ppc-os.h, and expect that the OS specific setting provides
7340         the required information.   
7341
7342 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7343
7344         * aot-compiler.c: Fix --enable-minimal=aot.
7345
7346 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7347
7348         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7349         previous change.
7350
7351 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7352
7353         * exceptions-arm.c: Fix warnings.
7354
7355         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7356         ARM.
7357
7358         * mini-x86.c: Fix --enable-minimal=jit build.
7359
7360         * mini.c: Really fix --enable-minimal=jit build.
7361         
7362         * mini.c (construct_object_context_for_method): Move this outside
7363         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7364
7365         "Backported" of r124984 from 2.0 branch.
7366         
7367         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7368
7369         "Backport" of r124977 + r124978 from 2.0 branch.
7370         
7371         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7372         to avoid calling mono_exception_from_token () from the throw trampoline.
7373         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7374         for throwing corlib exceptions, this fixes full-aot support for corlib
7375         exceptions.
7376
7377         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7378
7379 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7380
7381         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7382         part of the changes to split the code in mini into operating
7383         system specific files.
7384
7385         This patch was done by copying mini.c to the respective files to
7386         preserve SVN history.
7387
7388 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7389
7390         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7391
7392 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7393
7394         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7395         remoting-invoke-with-check wrappers of shared methods.
7396
7397         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7398
7399 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7400
7401         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7402         optimization if the top of stack is the last instruction in the
7403         bblock.  Otherwise it might have been used after its definition.
7404         Fixes #469742.
7405
7406 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7407
7408         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7409         method as well when get_vcall_slot () fails to match a code sequence.
7410
7411         * mini-arm.c: Fix the android build, which doesn't have
7412         __aeabi_read_tp.
7413
7414 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7415
7416         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7417         the s390x build.
7418
7419 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7420
7421         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7422
7423 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7424
7425         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7426         and put its id into jinfo->used_regs. This is only used on amd64,
7427         which is currently the only platform generating unwind info.
7428
7429         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7430         the dwarf unwinder. This is required to correctly handle async exceptions
7431         like thread abort and stack overflows, which can happen while a method
7432         is in the middle of its prolog or epilog.
7433         
7434         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7435         the unwind info belonging to an AOTed method.
7436
7437         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7438         into cfg->unwind_ops.
7439         
7440         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7441
7442         * mini.c (mini_init): Call mono_unwind_init ().
7443         (mini_cleanup): Call mono_unwind_cleanup ().
7444
7445         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7446         unwind info to be shared between methods.
7447
7448         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7449         saved in the LMF.
7450
7451         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7452         get_throw_pending_exception () to avoid initialization races.
7453
7454         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7455         mono_arch_exceptions_init () function.
7456
7457         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7458
7459 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7460
7461         * mini.c (mono_get_domain_intrinsic): New helper function.
7462         (mono_get_thread_intrinsic): Ditto.
7463
7464         * mini-arm.c mini-ia64.c: Use the new helper functions.
7465         
7466         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7467         the last constrained_call change, since it is needed in the non-AOT
7468         case as well.
7469
7470         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7471         
7472         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7473         mono_get_lmf_addr () on arm eabi linux.
7474
7475 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7476
7477         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7478         code sequence which matches a non-virtual call.
7479
7480 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7481
7482         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7483         stack pointer (r1).
7484
7485 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7486
7487         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7488         runtime-invoke wrappers, since they are also shared based on signature.
7489
7490 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7491
7492         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7493         info from the (correct) context.
7494
7495 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7496
7497         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7498         
7499         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7500         using dwarf unwinding info. Not yet used.
7501
7502         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7503
7504 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7505
7506         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7507         descriptors.
7508
7509         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7510         special case and handle mono_arch_delegate_invoke_impl() returning
7511         function descriptors.
7512
7513         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7514         trampolines return function descriptors, too.
7515
7516 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7517
7518         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7519         out_of_line optimization.
7520
7521 2009-01-21  Martin Baulig  <martin@ximian.com>
7522
7523         * mini.h
7524         (MonoCompile): Added `disable_deadce_vars' to disable removing
7525         unused variables.
7526
7527         * mini.c
7528         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7529         inside the debugger.
7530
7531         * liveness.c (mono_analyze_liveness): Don't remove any unused
7532         variables if `cfg->disable_deadce_vars' is set.
7533
7534 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7535
7536         * method-to-ir.c: Only apply exception constructor optimization if
7537         the the method actually belongs to an exception class.  Fixes
7538         #467456.
7539
7540 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7541
7542         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7543         change inside a #ifdef __mono_ppc64__.
7544
7545         * aot-compiler.c (compile_method): Remove the previous limitation.
7546
7547         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7548         on type variables in AOTed code.
7549         
7550         * aot-compiler.c (compile_method): Skip generic methods having type 
7551         constraints on their generic parameters.
7552
7553         * aot-compiler.c (compile_method): Check for methods which cannot be
7554         encoded inside RGCTX_FETCH patches as well.
7555
7556         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7557         build.
7558
7559 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7560
7561         * method-to-ir.c: Force the vtable variable in shared generic code
7562         for the case that they might show up on a stack trace where they
7563         are needed.
7564
7565         * mini-exceptions.c: Save and use generic sharing info as well as
7566         IP in stack traces to resolve shared generic instantiations.
7567
7568 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7569
7570         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7571         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7572
7573 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7574
7575         * method-to-ir.c: Do generic sharing for array constructors.
7576
7577 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7578
7579         * mini-exceptions.c (mono_print_thread_dump): Add information
7580         about the thread state using wapi_current_thread_desc.
7581
7582 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7583
7584         * basic-simd.cs: Tests for the new constructors. 
7585
7586 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7587
7588         * mini-ops.h: Added OP_EXPAND_*
7589
7590         * cpu-x86.md: Same.
7591
7592         * mini-x86.c (mono_arch_output_basic_block): Same.
7593         
7594         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7595
7596 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7597
7598         * iltests.il.in: Add a test for #467385.
7599
7600 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7601
7602         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7603         thread been cleaned up is not the same currently in execution.
7604
7605         Fixes appdomain-unload crashes on windows, osx and linux variants
7606         without the __thread keyword.
7607
7608 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7609
7610         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7611         (koush@koushikdutta.com). Implement this for android.
7612
7613         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7614         begins with a digit.
7615
7616         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7617         mono_marshal_get_write_barrier ().
7618
7619 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7620
7621         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7622         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7623         that pass them on a register pair.
7624
7625         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7626         test was crashing due to that.
7627
7628 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7629
7630         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7631         trampoline code. Include ucontext.h only if available.
7632
7633 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7634
7635         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7636         and doesn't check whether it's sharable, like it was before
7637         removing the shared generics hash.  This brings IronPython
7638         performance back to what it was before that change.
7639
7640 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7641
7642         * method-to-ir.c: Handle delegate invocation optimization earlier,
7643         otherwise it would be handled (much more slowly) by the
7644         final/sealed optimization.
7645
7646 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7647
7648         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7649         domain is not set. Fixes #465864.
7650
7651 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7652
7653         * method-to-ir.c: Don't stop sharing of generic methods with catch
7654         clauses - we already handle those.
7655
7656 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7657
7658         * mini.c, mini.h: lookup_generic_method() is now
7659         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7660         making the shared_generics_hash obsolete.
7661
7662 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7663
7664         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7665         use the red zone.  Make room on the stack first and then use it,
7666         not the other way around.
7667
7668 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7669
7670         * mini.c (mini_init): Call mono_xdebug_init ().
7671
7672         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7673
7674 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7675
7676         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7677
7678         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7679         trampolines.
7680
7681         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7682         debug+unwind info for trampolines.
7683
7684         * mini.c (mono_create_unwind_op): New helper function.
7685
7686         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7687
7688 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7689
7690         * aot-compiler.c: Fix the build.
7691
7692 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7693
7694         * Makefile.am: Update dtrace-prelink.sh location.
7695
7696 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7697
7698         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7699         optimization. Fixes #464520.
7700
7701 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7702
7703         * mini-amd64.c : Adding code to save/restore non-volatile registers
7704            on Winx64.
7705
7706         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7707           registers on Winx64.
7708
7709         Contributed under MIT/X11 license.
7710
7711 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7712
7713         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7714         __GNUC_MINOR__ which can break when the major version changes.
7715
7716 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7717
7718         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7719
7720 2009-01-07  Geoff Norton  <gnorton@novell.com>
7721
7722         * helpers.c:  Allow mono -v -v -v to work on darwin.
7723
7724 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7725
7726         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7727           pattern. 
7728
7729         Contributed under MIT/X11 license.
7730
7731 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7732
7733         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7734         instead of directly accessing type->data.klass. Fixes #462016.
7735         (mono_allocate_stack_slots_full): Ditto.
7736
7737         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7738         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7739
7740         * aot-compiler.c (emit_plt): Fix ARM build.
7741
7742 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7743
7744         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7745         
7746         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7747         change.
7748
7749         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7750         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7751         #463357.
7752
7753         * iltests.il.in: Add a regression test.
7754
7755 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7756
7757         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7758
7759 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7760
7761         * basic-simd.cs: Add a regression test for #462457.
7762
7763 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7764
7765         * mini-ops.h: Add a definition of XPHI.
7766
7767         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7768
7769         * ssa.c (op_phi_to_move): Handle XPHI.
7770
7771         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7772
7773         Fixes #462457
7774
7775 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7776
7777         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7778
7779 2008-12-31  Geoff Norton  <gnorton@novell.com>
7780
7781         * mini-ppc.c: The prolog size allocated can be too small for darwin
7782         ppc32 under certain circumstances.  Also fix a small logic bug.
7783
7784 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7785
7786         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7787         while loading AOT methods.
7788
7789         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7790         since only the former is nulled out after a successful cast. This prevents
7791         crashes with rethrown exceptions when using --debug=casts.
7792
7793 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7794
7795         * mini.h: New macro for checking whether a method is final,
7796         i.e. whether the method or its class is marked final.
7797
7798         * method-to-ir.c: Use the new macro for all final-checks
7799         consistently.  Fixes the crash in the System.ServiceModel tests.
7800
7801 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7802
7803         * mini-exceptions.c (get_exception_catch_class): Corrected another
7804         overly strict assertion.
7805
7806 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7807
7808         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7809         Clobbering it is not allowed because the caller might use it as
7810         the vtable register in the interface call.
7811
7812 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7813
7814         * mini-exceptions.c (get_exception_catch_class): Corrected an
7815         overly strict assertion.
7816
7817 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7818         
7819         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7820
7821         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7822
7823         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7824
7825         * cpu-mips.md: correct lengths for certain long_ opcodes.
7826
7827         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7828
7829         * 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().
7830         
7831 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7832
7833         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7834         
7835 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7836         
7837         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7838         
7839 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7840
7841         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7842         next basic block.
7843         
7844 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7845
7846         * 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
7847
7848         * 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)
7849         
7850 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7851         
7852         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7853         
7854 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7855
7856         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7857         gshared code. Fixes #458947.
7858
7859         * generics.cs: Add a test.
7860
7861 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7862         
7863         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7864         
7865         * mini-mips.c: first pass n32 code generation.
7866
7867         * mini-mips.h: datatypes and defines for n32 support.
7868
7869         * exceptions-mips.c: first pass n32 code generation.
7870         
7871         * tramp-mips.c: first pass n32 code generation.
7872         
7873         * cpu-mips.md: add long_ opcodes.
7874         
7875 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7876
7877         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7878
7879         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7880         
7881         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7882         
7883         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7884
7885         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7886
7887         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7888
7889         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7890
7891         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7892
7893         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7894
7895 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7896
7897         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7898
7899 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7900
7901         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7902
7903 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7904
7905         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7906         descriptors for helper functions directly in front of the code.
7907
7908 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7909
7910         * method-to-ir.c: Removed an unnecessary assertion.
7911
7912 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7913
7914         * method-to-ir.c: Merge SGEN changes from the old JIT.
7915
7916 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7917
7918         * driver.c (compile_all_methods_thread_main): Handle failure of
7919         mono_get_method ().
7920
7921 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7922
7923         * mini-ppc.c: Merged with mini-ppc64.c.
7924
7925         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7926
7927         * Makefile.am: Use the same sources for PPC and PPC64.
7928
7929         * mini-ppc64.c: Removed.
7930
7931 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7932
7933         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7934         code to mono_bb_is_fall_through.
7935         
7936         * branch-opts.c (mono_remove_critical_edges): Same.
7937
7938 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7939
7940         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7941         expect that an OP_BR_REG will be there.
7942
7943 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7944
7945         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7946         for the many branch ops. The original check miss OP_BR_REG.
7947
7948         Fixes #457574.
7949         
7950 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7951
7952         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7953
7954 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7955
7956         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7957         while holding the aot lock.
7958
7959 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7960
7961         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7962         
7963 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7964
7965         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7966           to release all runtime callable wrappers held by the runtime.
7967
7968         Contributed under MIT/X11 license.
7969
7970 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7971
7972         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7973           for Winx64.
7974
7975         Contributed under MIT/X11 license.
7976
7977 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7978
7979         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7980         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7981
7982 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7983
7984         * cpu-mips.md: fix ckfinite length
7985
7986         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7987         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7988         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7989         
7990 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7991
7992         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7993         
7994 2008-12-08  Geoff Norton  <gnorton@novell.com>
7995
7996         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7997         size by 8 bytes as well.
7998
7999 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8000
8001         * basic-simd.cs: Fix method names for Vector16b.
8002         
8003 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8004
8005         * basic-simd.cs: Fix method names for Vector16sb.
8006
8007 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8008
8009         * basic-simd.cs: Fix method names for Vector8us.
8010         
8011 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8012
8013         * basic-simd.cs: Fix method names for Vector8s.
8014         
8015 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8016
8017         * basic-simd.cs: Fix method names for Vector4ui.
8018
8019 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8020
8021         * basic-simd.cs: Fix method names for Vector2l.
8022
8023 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8024
8025         * basic-simd.cs: Fix method names for Vector2d.
8026
8027 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8028
8029         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
8030         that are extension methods.
8031
8032 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8033
8034         * basic-simd.cs: Fix method names for Vector4f.
8035
8036 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
8037
8038         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
8039         as such. Fixes #456669.
8040
8041 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
8042
8043         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
8044         
8045 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
8046
8047         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
8048         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
8049         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
8050         (mips_adjust_stackframe): handle FP spills
8051                 
8052         * mini-ops.h: add mips_mtc1_s2
8053         
8054         * cpu-mips.md: add mips_mtc1_s2
8055         
8056 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
8057
8058         * unwind.c: New file, move the unwind info encoding functions here from
8059         aot-compiler.c, so they could be used at runtime too.
8060
8061 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
8062
8063         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
8064         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
8065         
8066 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
8067
8068         * mini-mips.c: cleanup warnings
8069         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
8070         (mips_adjust_stackframe): handle case of taking the address of stack locals
8071         
8072 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8073
8074         * aot-compiler.c: Implement a few functions missing from the asm writer.
8075         (emit_method_code): Only write symbols for methods when using the bin
8076         writer, since the assembler can't deal with the characters in our method
8077         names.
8078
8079         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
8080
8081         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
8082         call.
8083
8084         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
8085         a bit to also restore %rax.
8086
8087 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8088
8089         * mini-ppc.c: Some simple merges from mini-ppc64.c.
8090
8091 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8092
8093         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
8094         arguments.
8095
8096 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8097
8098         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
8099
8100         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
8101         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
8102
8103         * exceptions-ppc64.c: Removed.
8104
8105         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
8106
8107 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8108
8109         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
8110         tramp-ppc64.c.
8111
8112         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
8113
8114         * tramp-ppc64.c: Removed.
8115
8116 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8117
8118         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
8119         the TYPESPEC table.
8120
8121 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8122
8123         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
8124
8125         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
8126         mini-ppc.h instead of mini-ppc64.h.
8127
8128         * mini-ppc64.h: Removed.
8129
8130 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8131
8132         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
8133         
8134         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
8135         
8136 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8137
8138         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
8139         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
8140         code easier.
8141
8142 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8143
8144         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
8145
8146 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8147
8148         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
8149
8150 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8151
8152         * basic-simd.cs: Tests for operator == and != on Vector4f.
8153
8154 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8155
8156         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
8157
8158         * simd-intrinsics.c: Kill useless enum.
8159
8160 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8161
8162         * cpu-mips.md: add long_conv_to_ovf_i4_2
8163         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
8164
8165 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8166
8167         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
8168         
8169         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
8170
8171 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8172
8173         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
8174         
8175 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8176
8177         * basic-simd.cs: Add tests for new methods.
8178
8179 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8180
8181         * simd-intrinsics.c: Add support for operator == and !=
8182         on Vector4(u)i.
8183
8184         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
8185
8186 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8187
8188         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
8189
8190 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
8191
8192         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
8193
8194         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
8195         MONO_PATCH_INFO_ICALL_ADDR.
8196
8197         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
8198
8199         * aot-compiler.c: Resurrect full-aot support.
8200
8201 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8202
8203         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
8204         
8205 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8206
8207         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
8208         
8209 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8210
8211         * basic-simd.cs: Fix tests to work under ppc.
8212         Remove tests for methods that will be removed.
8213
8214 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8215
8216         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8217         generic type (via a typedef or typeref) correctly.
8218
8219 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8220
8221         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8222         diagnose an assertion failure.
8223
8224 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8225
8226         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8227         Fix trampoline size.
8228
8229         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8230         conversion opcodes are implemented natively instead via emulation.
8231
8232 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8233
8234         * cpu-mips.md: remove mips_xori
8235
8236         * mini-ops.h:  remove mips_xori
8237
8238         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8239
8240         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8241         
8242         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8243         
8244 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8245
8246         * cpu-mips.md: fix instruction lengths.
8247
8248         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8249
8250         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8251
8252         * mini-ops.h: fix slti / sltiu op profiles.
8253         
8254 2008-12-02  Martin Baulig  <martin@ximian.com>
8255
8256         * method-to-ir.c (mono_method_to_ir): Disable debugging
8257         information for the init locals block to make the debugger stop
8258         after all locals have been initalized.
8259
8260 2008-12-02  Martin Baulig  <martin@ximian.com>
8261
8262         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8263         running inside the debugger.
8264
8265 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8266
8267         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8268         is enabled.
8269
8270         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8271         alu->alu imm optimization which only shows if deadce is disabled.
8272
8273         * aot-compiler.c: Rename the function names for the binary and asm writers
8274         so they can coexist in the same process. Rework the xdebug code to use the
8275         asm writer. This avoids the need to call into the runtime to dump the
8276         debugging info. Add more debugging info for types.
8277
8278         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8279
8280         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8281         cpu description tables, they can't occur in cpu-<ARCH>.md.
8282
8283         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8284         the stack in CEE_LDFLDA. Fixes #450542.
8285
8286         * generics.cs: Add a new test.
8287
8288 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8289
8290         * mini-ops.h: updated MIPS opcodes
8291         * mini-mips.c: decompose long opts
8292         * mini-mips.h: decompose long opts
8293         
8294 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8295
8296         * cpu-mips.md: fix length on int_rem_un
8297         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8298         
8299 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8300
8301         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8302
8303         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8304
8305 2008-11-29  Martin Baulig  <martin@ximian.com>
8306
8307         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8308         mono_debug_using_mono_debugger() in addition to the
8309         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8310
8311 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8312
8313         * mini-ops.h: updated more MIPS opcodes
8314         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8315         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8316         
8317 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8318
8319         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8320
8321 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8322
8323         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8324         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8325         * mini-ops.h: correct selected mips opcode entries
8326         
8327 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8328
8329         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8330         make them work.
8331
8332 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8333
8334         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8335
8336 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8337
8338         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8339         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8340         * mini-mips.h: disable IMT
8341         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8342         
8343 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8344
8345         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8346
8347 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8348
8349         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8350
8351 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8352
8353         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8354         consistency.
8355
8356 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8357
8358         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8359         for Set/GetVector aligned versions.
8360
8361 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8362
8363         * basic-simd.cs: Add tests for Get/SetVector.
8364
8365 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8366
8367         * mini.c: Removed g_slist_append_mempool().  Now in
8368         metadata/mempool.c.
8369
8370 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8371
8372         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8373         size properly and make the bounds check optional.
8374
8375         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8376         for SetVector and IsAligned.
8377
8378 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8379
8380         * mini.c: Remove unused mono_normalize_opcodes () function.
8381
8382 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8383
8384         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8385         using the new atomic add ops now.
8386
8387         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8388         add.
8389
8390 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8391
8392         * mini-ppc64.c: Several fixes.
8393
8394 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8395
8396         * cpu-mips.md: added jump_table
8397         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8398
8399 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8400
8401         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8402
8403 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8404
8405         * mini-ops.h: corrected a handful of MIPS opcodes.
8406
8407 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8408
8409         * aot-compiler.c: MIPS to use ELF writer
8410
8411 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8412
8413         * mini-codegen.c: remove MIPS specific assert.
8414
8415 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8416
8417         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8418         fixes.  PPC64 now passes most of the runtime regressions.
8419
8420 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8421
8422         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8423         volatile intervals a bit.
8424
8425 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8426
8427         * basic-long.cs: New test case.
8428
8429 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8430
8431         * mini.c (mini_method_compile): Disable globalra for large methods for 
8432         now.
8433
8434         * regalloc2.c (order_moves): Add fp support.
8435
8436         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8437         source bblock ends with an OP_BR_REG.
8438
8439         * ratests.cs: Add a new test.
8440
8441 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8442
8443         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8444         sharing.  PPC64 now passes generics.exe.
8445
8446 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8447
8448         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8449
8450 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8451
8452         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8453         memory when mono_jit_info_table_find () can't find the method in the
8454         LMF case.
8455
8456         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8457         AOTed code too.
8458         
8459         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8460         writer too.
8461
8462 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8463
8464         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8465         Several fixes.  PPC64 now runs exceptions.exe and
8466         devirtualization.exe.
8467
8468 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8469
8470         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8471         arrays.exe and basic-math.exe.
8472
8473 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8474
8475         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8476         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8477
8478 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8479
8480         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8481
8482 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8483
8484         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8485
8486         * ir-emit.h: Move macros from method-to-ir.c to here.
8487
8488 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8489
8490         * mini-ops.h: Correct the long simd ops to use LREG.
8491
8492 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8493
8494         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8495         
8496         * mini-ops.h: Correct the dreg type of a few long opcodes.
8497
8498         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8499         Add netbsd support.
8500
8501 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8502
8503         * mini-ppc.c: remove negative stack references in epilog
8504         for platforms that don't support the red zone.
8505
8506 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8507
8508         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8509         point regs.  Now PPC64 passes basic-calls.exe.
8510
8511 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8512
8513         * basic-simd.cs: Add tests for accessors of Vector2l.
8514
8515 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8516
8517         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8518
8519         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8520         
8521         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8522
8523 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8524
8525         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8526         PPC64 passes basic-long.exe.
8527
8528 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8529
8530         * decompose.c: Decompose carry and overflow add on PPC64 like on
8531         other 64 bit archs.  Don't decompose sub at all on PPC64.
8532
8533         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8534         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8535         basic-long.exe.
8536
8537 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8538
8539         * basic-simd.cs: Add tests for accessors of Vector2d.
8540
8541 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8542
8543         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8544
8545         * cpu-x86.md: Same.
8546
8547         * mini-x86.c (mono_arch_output_basic_block): Same.
8548         
8549         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8550
8551 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8552
8553         * basic-simd.cs: Add tests for accessors of Vector4f.
8554
8555 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8556
8557         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8558
8559         * cpu-x86.md: Same.
8560
8561         * mini-x86.c (mono_arch_output_basic_block): Same.
8562         
8563         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8564
8565 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8566
8567         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8568
8569 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8570
8571         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8572
8573         * cpu-x86.md: Same.
8574
8575         * mini-x86.c (mono_arch_output_basic_block): Same.
8576         
8577         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8578
8579 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8580
8581         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8582
8583 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8584
8585         * simd-intrinsics.c: Enable setters for Vector16sb.
8586
8587 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8588
8589         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8590
8591         * cpu-x86.md: Same.
8592
8593         * mini-x86.c (mono_arch_output_basic_block): Same.
8594         
8595         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8596
8597 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8598
8599         * simd-intrinsics.c: Implement setter for Vector8us.
8600
8601 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8602
8603         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8604         for dead variables.
8605
8606 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8607
8608         * mini-ppc.c: remove references to the red zone in the prolog
8609         (for systems that don't support it).
8610
8611 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8612
8613         * cpu-ppc64.md: Fixed a few instruction lengths.
8614
8615         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8616         now.
8617
8618 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8619
8620         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8621         basic.exe now.
8622
8623 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8624
8625         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8626
8627 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8628
8629         * mini-ops.h: Added OP_INSERT_I2.
8630
8631         * cpu-x86.md: Same.
8632
8633         * mini-x86.c (mono_arch_output_basic_block): Same.
8634         
8635         * simd-intrinsics.c: Implement setter for Vector8s.
8636
8637         * simd-methods.h: Add the names of get setters of Vector8s.
8638
8639 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8640
8641         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8642         
8643         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8644         parameters.
8645
8646         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8647
8648 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8649
8650         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8651         for PPC64.  An empty program runs now.
8652
8653 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8654
8655         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8656
8657         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8658         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8659         info for JITted code is emitted into a shared library, loadable into gdb.
8660
8661 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8662
8663         * Makefile.am: Changes to build PPC64.
8664
8665         * mini-arch.h: Include mini-ppc64.h on PPC64.
8666
8667 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8668
8669         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8670         in PPC code up to r119147.
8671
8672 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8673
8674         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8675         cpu-ppc64.md: Changes for PPC64.
8676
8677         Based on code submitted by andreas.faerber@web.de at
8678         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8679         X11/MIT license.
8680
8681 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8682
8683         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8684         cpu-ppc64.md: Copied from the corresponding PPC files from
8685         r118846.
8686
8687 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8688
8689         * mini-ops.h: Added OP_ROUND.
8690
8691         * cpu-x86.md: Added round.
8692
8693         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8694
8695         * basic-math.cs: Added test_0_round to test rounding.
8696
8697         Contributed under MIT/X11 license.
8698
8699 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8700
8701         * aot-compiler.c : Fix the Winx64 build.
8702
8703         Contributed under MIT/X11 license.
8704
8705 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8706
8707         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8708         in OP_EXTRACT_R8 to avoid possible stack corruption.
8709
8710 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8711
8712         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8713
8714         * cpu-x86.md: Added extract_r8.
8715
8716         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8717         
8718         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8719         a couple of OP_EXTRACT_I4.
8720
8721         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8722
8723         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8724
8725 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8726
8727         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8728         and not 4.1. 
8729
8730 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8731
8732         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8733         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8734
8735         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8736         are not needed any more.
8737
8738         * mini.h: Remove the unused INS_LIST macros.
8739
8740         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8741         longer needed.
8742
8743         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8744         ir-emit.h.
8745
8746         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8747         mono_alloc_ireg () instead.
8748
8749         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8750         macros.
8751
8752         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8753         on amd64.
8754
8755         * aot-runtime.c (load_aot_module): Disable AOT when running under
8756         CAS.
8757
8758         * mini-amd64.h: Change the monitor fastpath defines to check for
8759         !PLATFORM_WIN32 so they work on *bsd too.
8760
8761         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8762
8763         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8764
8765         * mini.h (MonoCompile): Remove new_ir flag.
8766
8767         * regalloc.h regalloc.c: Remove unused code.
8768
8769         * cpu-*.md: Remove more unused opcodes.
8770
8771         * simple-cee-ops.h simple-mini-ops.h: Removed.
8772
8773         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8774         
8775 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8776
8777         * aliasing.h: Removed.
8778
8779         * *.c: Remove references to aliasing.h and inssel.h.
8780
8781         * mini.c: Remove additional unused functions.
8782
8783         * mini-ops.h cpu-*.md: Remove unused opcodes.
8784
8785 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8786
8787         Remove the old JIT code.
8788
8789         * inssel*.brg: Removed.
8790
8791         * ssa.c abcremoval.c aliasing.c: Removed.
8792
8793         * ssa2.c: Renamed to ssa.c.
8794
8795         * abcremoval2.c: Renamed to abcremoval.c.
8796
8797         * *.c: Removed all !cfg->new_ir code.
8798
8799         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8800         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8801
8802         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8803         
8804 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8805
8806         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8807         to simplify the code and cut back on the number of global symbols in the AOT
8808         file.
8809         
8810         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8811
8812 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8813
8814         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8815         with the got/got_info tables.
8816
8817         * mini.h: Bump AOT file format version.
8818         
8819         * unwind.h: New file, contains definitions for stack unwinding.
8820
8821         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8822         to cfg->unwind_ops.
8823         
8824         * aot-compiler.c: Generalize the emitting of unwind information to use the
8825         information in cfg->unwind_ops.
8826
8827         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8828
8829         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8830         AOT method frames. Enable writing symbols for methods by default.
8831
8832 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8833
8834         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8835         and make it work with vectors of element sizes 1, 2 and 4.
8836
8837         * simd-intrinsics.c: Enable getter for all vectors with element size
8838         1, 2 or 4.
8839
8840         * simd-methods.h: Add the names of other getters.
8841
8842         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8843
8844         * cpu-x86.md: Same.
8845
8846         * mini-x86.c: Same.
8847
8848 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8849
8850         * mini-ppc.h: portability fix.
8851
8852 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8853
8854         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8855         buggy and will overwrite it.
8856
8857 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8858
8859         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8860         Use it to emit local symbols for all methods so AOTed methods show up with
8861         their full name in gdb/valgrind output.
8862
8863 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8864
8865         * mini-ppc.c: portability fixes.
8866
8867 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8868
8869         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8870         entries out of the if (!generic_shared...) code so it is always done.
8871         (mono_class_init_trampoline): Do the patching when running under valgrind
8872         too, newer versions of valgrind have no problems with it.
8873
8874 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8875
8876         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8877         further sections.
8878
8879 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8880
8881         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8882         filters.
8883
8884 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8885
8886         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8887
8888 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8889
8890         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8891
8892         * cpu-x86.md: Same.
8893
8894         * mini-x86.c: Same.
8895
8896         * simd-intrinsics.c: Same.
8897
8898 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8899
8900         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8901
8902 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8903
8904         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8905         to work with more Vector types.
8906
8907 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8908
8909         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8910         store the elemens directly instead of using and intermediate.
8911
8912 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8913
8914         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8915
8916         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8917         to preserve %eax for aot plt trampolines.
8918
8919         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8920         (encode_method_ref): Flag synchronized methods so they won't go through
8921         the AOT trampoline.
8922
8923         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8924         wrappers.
8925
8926         * cpu-ia64.md (jmp): Increase max length.
8927
8928 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8929
8930         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8931         open generic classes.
8932
8933         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8934
8935         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8936         box+brtrue optimization since it causes test failures on x86.
8937
8938 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8939
8940         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8941
8942         * cpu-x86.md: Same.
8943
8944         * mini-x86.c: Same.
8945
8946         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8947         for simd ctor values. 
8948
8949         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8950         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8951
8952 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8953
8954         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8955         LogicalRightShift.
8956
8957         * simd-instrincs.c: Same.
8958
8959         * basic-simd.cs: Same.
8960
8961 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8962
8963         * ratests.cs: Add more tests.
8964
8965         * regalloc2.c (add_spill_code): Handle more corner cases.
8966
8967 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8968
8969         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8970         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8971         both the source an destination of an instruction.
8972
8973 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8974
8975         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8976         wapihandles.c: more portability changes.
8977
8978 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8979
8980         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8981         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8982         safe to execute in a signal handler and the kernel provides better
8983         the info in /proc/self/smaps. Avoid the assert on sigaction during
8984         cleanup.
8985
8986 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8987
8988         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8989         do the bblock linking hack if it is actually needed.
8990
8991         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8992         up linking.
8993
8994         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8995         crash problem is fixed.
8996
8997         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8998         bblocks.
8999
9000         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
9001         for catch clauses.
9002         (mini_method_compile): Set the starting value of next_vreg to 
9003         MAX_IREGS + MAX_FREGS when using globalra.
9004
9005         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
9006         filter clauses with BB_EXCEPTION_HANDLER.
9007
9008         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
9009
9010 2008-11-10  Mark Probst  <mark.probst@gmail.com>
9011
9012         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
9013         space for stdcall.  Fixes regressions on Win32.
9014
9015 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
9016
9017         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
9018         bblocks.
9019         (linear_scan): Remove an assert which doesn't seem to be needed.
9020
9021         * local-propagation.c (mono_local_deadce): Avoid a call to
9022         MONO_DELETE_INS which would screw up the instruction linking.
9023
9024         * mini.c (mono_decompose_op_imm): Make this work with globalra.
9025
9026         * regalloc2.c: Upgrade to work the current JIT code.
9027
9028 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
9029
9030         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
9031         case.
9032
9033         * aot-runtime.c: Remove some dead code.
9034
9035         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
9036         consistency.
9037         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
9038
9039         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
9040         trampolines using sscanf since atoi doesn't work on large unsigned values.
9041
9042         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
9043         Initialize code_size.
9044
9045 2008-11-08  Mark Probst  <mark.probst@gmail.com>
9046
9047         * method-to-ir.c (mini_emit_inst_for_method): Make
9048         Interlocked.CompareExchange work for Int arguments on 32 bit
9049         archs, as well.
9050
9051 2008-11-07  Mark Probst  <mark.probst@gmail.com>
9052
9053         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
9054
9055 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
9056
9057         * main.c Fix MSVC build.
9058
9059         Contributed under MIT/X11 license.
9060
9061 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9062
9063         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
9064         alignment larger than 8 bytes are aligned correctly, too.
9065
9066         * mini.c: Honor the min_align field of MonoClass when laying out
9067         the stack.
9068
9069 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
9070
9071         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
9072
9073         * aot-compiler.c (emit_plt): Fix a warning.
9074         
9075         * aot-compiler.c: Implement ARM support in the binary writer.
9076
9077 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9078
9079         * basic-simd.cs: Add test for getter with byref arg.
9080         Fix the naming of a few tests.
9081         Add missing checks to a test.
9082
9083 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
9084
9085         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
9086
9087         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
9088         most of the full-aot support for monitor enter/exit trampolines.
9089
9090         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
9091         enter/exit trampoline creation functions.
9092
9093         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
9094         make dist.
9095
9096 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
9097
9098         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
9099         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
9100         implement the needed functionality without adding crap to the runtime.
9101
9102 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
9103
9104         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
9105         non-x86 builds.
9106
9107         * mini.c (mono_build_date): New global version holding the build date in
9108         string format.
9109         
9110         * Makefile.am (buildver.c): Generate a file containing the build date.
9111
9112         * main.c: Set the build date from the generated file.
9113
9114         * mini.c (mono_get_runtime_build_info): New helper function returning build
9115         information in a string format.
9116         
9117         * driver.c (mono_main): Print the build date in --version.
9118
9119         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
9120         file when the bind-to-runtime-version option is used.
9121
9122 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9123
9124         * simd-intrinsics.c: Fix bug when using getters and byref args. 
9125
9126 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9127
9128         * simd-methods.h: Rename prefetch methods.
9129
9130         * simd-intrinsics.c: Same.      
9131
9132 2008-11-05  Mark Probst  <mark.probst@gmail.com>
9133
9134         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
9135         sizes.
9136
9137 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9138
9139         * aot-compiler.c: Use the bundled elf header files instead of depending on
9140         the system one.
9141         
9142         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
9143         mempool.
9144
9145         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
9146         on every call.
9147
9148 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
9149
9150         * cpu-x86.md: Add store nta ops.
9151
9152         * mini-ops.h: Same.
9153
9154         * mini-x86.c: Same.
9155
9156         * mini.h: Add an enum for simd prefetch modes.
9157
9158         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
9159         of store. Use the changed code to support store nta.
9160
9161         * simd-intrinsics.c: Add prefetch ops for all vector types.
9162
9163 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9164
9165         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
9166         threads.
9167         
9168         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
9169         names.
9170
9171         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
9172         trampolines.
9173
9174 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9175
9176         * mini-x86.c: Fixed commit.
9177
9178 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9179
9180         * aot-compiler.c (emit_plt): Align the plt section only on x86.
9181
9182 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9183
9184         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
9185         and MONITOR_EXIT, for the ASM fastpaths.
9186
9187         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
9188         available.
9189
9190         * mini.c, patch-info.h: Signature and patch infos for
9191         Monitor.Enter/Exit trampolines.
9192
9193         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
9194
9195         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
9196         Monitor.Enter/Exit ASM fastpath for Linux.
9197
9198 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9199
9200         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
9201
9202         * objects.cs: Add a new test.
9203         
9204         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
9205
9206         * aot-runtime.c (load_method): Run class initialization in the PLT case even
9207         if MONO_LOG_LEVEL is set.
9208
9209         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9210
9211         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9212
9213         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9214         
9215         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9216         of file offsets. Align the sections belonging to the data segment to 
9217         PAGESIZE.
9218
9219 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9220
9221         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9222         elf.h. Port it to amd64.
9223
9224 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9225
9226         * driver.c: Enable SIMD by default.
9227
9228 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9229
9230         * cpu-x86.md: Add prefetch op.
9231
9232         * mini-ops.h: Same.
9233
9234         * mini-x86.c: Same.
9235
9236         * mini.h: Add an enum for simd prefetch modes.
9237
9238         * simd-methods.h: Add prefetch function names.
9239
9240         * simd-intrinsics.c: Add prefetch ops for all vector types.
9241
9242 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9243
9244         * aot-compiler.c (emit_bytes): Speed this up a little.
9245
9246 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9247
9248         * aot-compiler.c: Add JIT time etc. statistics.
9249         
9250         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9251
9252         * mini.h (MonoCompile): Add 'got_offset' field.
9253
9254         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9255         method_got_offsets array.
9256
9257         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9258         wrappers.
9259
9260         * aot-compiler.c (compile_method): Add generic method instances referenced
9261         by the method to the list of methods to be compiled, this is required so if
9262         A<T> references B<T>, and another assembly references A<int>, then it will
9263         also get a copy of B<int>.
9264
9265         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9266         when checking for monitor enter/exit.
9267
9268 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9269
9270         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9271         for Monitor.Enter and Monitor.Exit if enabled.
9272
9273         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9274         Solaris.
9275
9276 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9277
9278         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9279         of an OP_MOVE. Fixes #440046.
9280
9281         * basic-long.cs: Add a new test.
9282
9283 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9284
9285         * mini.h: Add synchronization note for the managed counter-part.
9286
9287         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9288         returns the simd caps of the current cpu.
9289
9290 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9291
9292         * basic-simd.cs: Remove Console.WriteLine.
9293
9294 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9295
9296         * basic-simd.cs: New tests for Vector2ul.
9297
9298 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9299
9300         * simd-intrinsics.c: Add new vector type Vector2ul.
9301
9302 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9303
9304         * basic-simd.cs: New tests for Vector2l.
9305
9306 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9307
9308         * cpu-x86.md: Add long version of most packed int ops.
9309
9310         * mini-ops.h: Same.
9311
9312         * mini-x86.h: Same.
9313
9314         * simd-intrinsics.c: Add new vector type Vector2l.
9315
9316 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9317
9318         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9319
9320         * simd-methods.h: Remove SN_op_BitwiseXor.
9321
9322 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9323
9324         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9325         alignment.
9326
9327 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9328
9329         * basic-simd.cs: Test for Vector2d.
9330
9331         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9332         value.
9333
9334 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9335
9336         * cpu-x86.md: Add double version of all packed float ops.
9337
9338         * mini-ops.h: Same.
9339
9340         * mini-x86.h: Same.
9341
9342         * simd-intrinsics.c: Add new vector type Vector2d.
9343
9344         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9345
9346         * simd-methods.h: Add Duplicate.
9347
9348 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9349
9350         * basic-simd.cs: Test for packing with signed saturation.
9351
9352 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9353
9354         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9355         found in the TYPESPEC table.
9356
9357 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9358
9359         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9360         too.
9361
9362         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9363
9364         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9365         instead of the RVA, since the RVA can be changed by tools like the cil 
9366         stripper.
9367
9368         * method-to-ir.c (mono_method_to_ir2): Ditto.
9369
9370         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9371         (deserialize_variable): Ditto.
9372
9373 2008-10-25  Martin Baulig  <martin@ximian.com>
9374
9375         * debug-mini.c (write_variable): Use
9376         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9377
9378 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9379
9380         * cpu-x86.md: Add unsigned variants of packd and packw.
9381
9382         * mini-ops.h: Same.
9383
9384         * mini-x86.h: Emit the right instruction for packd and packw.
9385         Add unsigned variants of packd and packw.
9386
9387         * simd-intrinsics.c: Packd and packw were used in place of their
9388         unsigned variants. Change that.
9389         Add intrinsics for (Signed)PackWithSignedSaturation.
9390
9391         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9392
9393 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9394
9395         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9396
9397 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9398
9399         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9400
9401         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9402
9403         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9404         sse instructions.
9405
9406         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9407
9408 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9409
9410         * method-to-ir.c, mini.c: Special casing for the synchronized
9411         wrapper for the ldtoken+GetTypeFromHandle case.
9412
9413 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9414
9415         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9416
9417         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9418         created/split bblocks.
9419
9420 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9421
9422         * mini-ops.h: Add packed signed mul high.
9423         
9424         * cpu-x86.md: Same.
9425
9426         * mini-x86.c (mono_arch_output_basic_block): Same.
9427
9428         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9429
9430         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9431
9432 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9433
9434         * basic-simd.cs: Tests for Vector16sb.
9435
9436 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9437
9438         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9439
9440 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9441
9442         * mini-ops.h: Add packed signed min, max and compare greater.
9443         
9444         * cpu-x86.md: Same.
9445
9446         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9447         saturation.
9448
9449         * simd-methods.h: Add CompareGreaterThan.
9450
9451         * simd-methods.h: Remove CompareEquals.
9452
9453         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9454
9455         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9456
9457         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9458         CompareEqual.
9459
9460 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9461
9462         * basic-simd.cs: Fix tests due to change in the API.
9463
9464 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9465
9466         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9467
9468 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9469
9470         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9471
9472         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9473         inst_offset as this has invalid values for LDADDR.
9474
9475 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9476
9477         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9478
9479         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9480
9481 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9482
9483         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9484         for accessing field->data.
9485
9486 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9487
9488         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9489
9490 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9491
9492         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9493
9494         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9495
9496 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9497
9498         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9499         from the cfg mempool.
9500
9501 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9502
9503         * basic-simd.cs: Tests for new methods in Vector8us.
9504
9505 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9506
9507         * mini-ops.h: Add multiply and store high.
9508         
9509         * cpu-x86.md: Same.
9510
9511         * mini-x86.c (mono_arch_output_basic_block): Same.
9512
9513         * simd-methods.h: Same.
9514
9515         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9516         and CompareEqual.
9517
9518 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9519
9520         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9521         mono_class_setup_vtable ().
9522
9523         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9524         mono_class_get_vtable_entry () for accessing klass->vtable.
9525
9526         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9527
9528         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9529         found.
9530
9531         * method-to-ir.c (mono_save_token_info): Don't save references made from
9532         wrappers.
9533
9534         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9535         of generic instances.
9536
9537         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9538
9539 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9540
9541         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9542         OP_JMP depends on the method signature.  Calculate it properly.
9543
9544 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9545         
9546         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9547         called directly.
9548
9549         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9550         instances.
9551         (emit_extra_methods): Add another table mapping method indexes to 
9552         offsets in the extra_method_info table.
9553
9554         * mini.h: Bump AOT file format version.
9555         
9556         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9557         and mono_aot_get_method_from_token () into one function.
9558
9559 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9560
9561         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9562         separate counter.
9563
9564 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9565
9566         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9567         methods.
9568
9569         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9570         disable_aot.
9571
9572         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9573
9574         * mini.h: Bump aot file format version.
9575
9576         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9577         AOT file can contain native code for methods which are not in the METHOD
9578         table. Generate code for non-sharable generic instances of generic methods
9579         found in the METHODSPEC table.
9580         
9581         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9582         encoding generic type handles.
9583
9584         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9585         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9586
9587         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9588         macros + MONO_ADD_INS.
9589
9590         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9591         context as well.
9592
9593         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9594
9595         * mini.h: Bump aot file format version.
9596
9597         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9598
9599 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9600
9601         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9602         platforms, with definable stack alignment value.  Set to 16 now
9603         for all platforms.
9604
9605         * mini.c, mini.h, driver.c: Command line option for disabling
9606         stack alignment.
9607
9608 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9609
9610         * basic-simd.cs: Tests for new methods in Vector4ui.
9611
9612 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9613
9614         * mini-ops.h: Add packed int shuffle.
9615         
9616         * cpu-x86.md: Same.
9617
9618         * mini-x86.c (mono_arch_output_basic_block): Same.
9619
9620         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9621         extract mask, max, min, shuffle.
9622
9623         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9624
9625 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9626
9627         * basic-simd.cs: Tests for new methods in Vector8us.
9628
9629 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9630
9631         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9632         RuntimeTypeHandle, not a TypedReference.
9633
9634 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9635
9636         * simd-intrinsics.c: remove relocations.
9637
9638 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9639
9640         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9641         optimizations from the x86 backend.
9642
9643 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9644
9645         * simd-methods.h, simd-intrinsics.c: debloat method names and
9646         prepare for no relocations.
9647
9648 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9649
9650         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9651         
9652         * cpu-x86.md: Same.
9653
9654         * mini-x86.c (mono_arch_output_basic_block): Same.
9655
9656         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9657         extract mask, max, min and sum of absolute differences.
9658
9659         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9660         method name.
9661
9662 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9663
9664         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9665         Renamed one test for consistency.
9666
9667 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9668
9669         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9670         fix to the code that deal with other blocks.
9671
9672 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9673
9674         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9675
9676 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9677
9678         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9679         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9680         able to process the source reg.
9681
9682 2008-10-16  Martin Baulig  <martin@ximian.com>
9683
9684         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9685
9686         * inssel.brg: Add `OP_HARD_NOP'.
9687
9688         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9689
9690         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9691         `OP_HARD_NOP' instruction when running inside the debugger.
9692
9693         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9694         `OP_HARD_NOP' instruction when running inside the debugger.
9695
9696 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9697
9698         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9699         now works. The issue with the regalloc tripping up no longer
9700         happens.
9701
9702         * simd-intrinsics.c (load_simd_vreg): Same.
9703
9704 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9705         
9706         * basic-simd.cs: Tests for new Vector8ui methods.
9707
9708 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9709
9710         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9711         only for type. This fixes crashes where MonoInst::klass is checked
9712         for ops of type != VTYPE or OBJ.
9713
9714         * simd-intrinsics.c (load_simd_vreg): Same.
9715
9716 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9717
9718         * mini-ops.h: Add ops for packed shuffle/max/avg and
9719         extract mask.
9720         
9721         * cpu-x86.md: Same.
9722
9723         * mini-x86.c (mono_arch_output_basic_block): Same.
9724
9725         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9726         extract mask.
9727
9728         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9729         to emit extract mask op.
9730
9731         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9732         to emit word shuffles.
9733
9734 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9735
9736         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9737         the largest alignment needed by a variable, but at least
9738         sizeof(gpointer).
9739
9740 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9741
9742         * basic-simd.cs: Tests for the fixes in the last commit.
9743
9744 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9745
9746         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9747         no longer handles STACK_PTR input.
9748
9749         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9750
9751         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9752         get_simd_vreg   but handles STACK_PTR input.
9753
9754         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9755         as the input can be an arbitrary pointer.
9756
9757         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9758         LDADDR local optimization directly otherwise use a store op.
9759
9760 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9761
9762         * basic-simd.cs: Tests for dup low and dup high.
9763
9764 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9765
9766         * mini-ops.h: Add dup low and dup high ops.
9767         
9768         * cpu-x86.md: Same.
9769
9770         * mini-x86.c (mono_arch_output_basic_block): Same.
9771
9772         * simd-intrinsics.c (vector4f_intrinsics): Same.
9773
9774 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9775
9776         * basic-simd.cs: Tests for recently added functionality.
9777
9778 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9779
9780         * mini-ops.h: Add remaining sse1 fp ops.
9781         
9782         * cpu-x86.md: Add remaining sse1 fp ops.
9783
9784         * mini-x86.c (mono_arch_output_basic_block): Same.
9785
9786         * mini.h: Add enum for simd FP compare conditions.
9787
9788         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9789
9790         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9791         so the backed can generate the appropriate op.
9792
9793 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9794         This patch squeese one more byte from the SimdIntrinsc struct.
9795
9796         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9797         a a shift amount intead of simply or'ing it.
9798
9799         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9800
9801         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9802         byte so we can have an aditional flags field without increasing struct size.
9803
9804         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9805         against the simd_supported_versions bitmask.
9806
9807         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9808
9809 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9810
9811         * mini.c: remove rawbuffer code (the only use here is unsafe because
9812         it takes locks during signal handling and the kernel now provides much
9813         better info in proc/pid/smaps these days).
9814
9815 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9816
9817         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9818         OP_X86_PUSH_OBJ. Fixes #434620.
9819
9820         * objects.cs: Add a test.
9821         
9822 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9823
9824         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9825         that the packuswb/packusdw don't work with unsigned numbers for what
9826         would be negative numbers in signed format.
9827
9828         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9829         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9830
9831         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9832
9833         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9834
9835         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9836
9837         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9838
9839         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9840         add more ops.
9841
9842         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9843         version as the enum in mini.h.
9844
9845         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9846         for sse3 ops, check the simd_version field if present. This way the code
9847         works with all versions of sse.
9848
9849 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9850
9851         * simd-intrinsics.c: Fixed intrinsic name typo.
9852
9853         * mini.h: Added missing simd exported function.
9854
9855         * basic-simd.cs: Added tests for Vector4ui.
9856         Fixed broken test for Vector16b.
9857
9858 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9859
9860         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9861         the max length to 64.
9862
9863 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9864
9865         * method-to-ir.c: Only do the fast virtual generic method call for
9866         non-wrapper methods.
9867
9868         * mini.h, mini-trampolines.c: The new generic virtual remoting
9869         trampoline handles virtual method calls via the vtable (as done by
9870         the fast virtual generic method calls) to remoting proxies.
9871
9872         * mini.c (mono_jit_create_remoting_trampoline): For generic
9873         methods reate a generic virtual remoting trampoline.
9874
9875         * mini-amd64.h: Enable fast virtual generic method calls again.
9876
9877 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9878
9879         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9880         restore registers when doing tail calls.
9881
9882 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9883
9884         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9885         Vector4ui.
9886
9887 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9888
9889         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9890
9891 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9892
9893         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9894
9895 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9896
9897         * basic-simd.cs: Retrofit for API changes.
9898
9899 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9900
9901         * mini-ppc.c: Handle integer stack arguments for tail calls.
9902
9903 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9904
9905         * optflags-def.h: Removed sse3 optimization.
9906
9907         * driver.c: Same.
9908
9909         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9910         sse3.
9911
9912         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9913
9914         * mini.h: Added enumeration with simd versions.
9915
9916         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9917         for detecting SSE3.
9918
9919         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9920
9921         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9922
9923 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9924
9925         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9926
9927         * basic-simd.cs: Fixed test naming.
9928
9929 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9930
9931         * mini-ops.h: Added ops for packed and saturated math, shifts
9932         and packing/unpacking.
9933
9934         * cpu-x86.md: Added descriptors for the above ops.
9935
9936         * mini-x86.c: Added code to emmit the above ops.
9937
9938         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9939
9940 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9941
9942         * aot-compiler.c (compile_method): Enable AOT for generic code.
9943
9944         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9945
9946 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9947
9948         * mini.c: add a workaround for a common screwup that ends up blamed
9949         to mono (other processes blocking signal delivery).
9950
9951 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9952
9953         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9954         in the LDFLD/STFLD opcodes. Fixes #432673.
9955
9956         * iltests.il.in: Add a new test.
9957
9958 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9959
9960         * mini-arm.c: attach the thread in unmanaged->managed transitions
9961         using delegates (bug #433148).
9962
9963 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9964
9965        * basic-simd.cs: Use new ShuffleSel constants.
9966
9967 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9968
9969         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9970
9971         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9972         only disable simd intrinsics if no sse2 is detected.
9973
9974         * optflags-def.h: Added sse3.
9975
9976         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9977         is disabled.
9978
9979 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9980
9981         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9982         when adding delegate-invoke wrappers.
9983
9984 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9985
9986         * Makefile.am: Reenable the simd tests.
9987
9988 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9989
9990         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9991           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9992           other vreg is allocated to that hreg.
9993
9994         Contributed under MIT/X11 license.
9995
9996 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9997
9998         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9999         yet checked in.
10000
10001 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
10002
10003         * basic-simd.cs: New test suite for SIMD intrinsics.
10004
10005         * Makefile.am: Added new tests.
10006
10007 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
10008
10009         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
10010
10011         * mini-ops.h: Same.
10012
10013         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
10014
10015         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
10016         using SSE2 aware opcodes.
10017
10018         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
10019         is enabled, this code path is only reachable if conversion ops are emmited after
10020         mono_method_to_ir.
10021
10022         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
10023
10024         This optimization saves 6 bytes per conversion against the old version.
10025
10026 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10027
10028         * aot-compiler.c (compile_method): Don't skip methods referencing 
10029         generic methods without a corresponding entry in token_info_hash, since
10030         encode_method_ref () can handle all generic methods now.
10031
10032         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
10033         generic context is set.
10034         
10035         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
10036         generic sharing of LDTOKEN.
10037
10038 2008-10-06  Mark Probst  <mark.probst@gmail.com>
10039
10040         * mini-amd64.h: Temporarily disabled fast virtual generic method
10041         calls because it breaks the System.Runtime.Remoting tests.
10042
10043 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10044
10045         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
10046
10047         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
10048         so inlining actually works.
10049         (check_inline_caller_method_name_limit): Ditto.
10050
10051 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
10052
10053         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
10054         64 bit safety (from Olaf Hering and Andreas Farber).
10055
10056 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10057         
10058         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
10059         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
10060         unused virtual call support code.
10061
10062         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
10063         
10064         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
10065         which can't use aot trampolines.
10066         (decode_patch): Don't create aot trampolines for methods which can't use
10067         them.
10068
10069         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
10070         use aot trampolines.
10071
10072         * mini.h: Bump AOT image format version.
10073         
10074 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
10075
10076         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
10077         to save_token_info () since cmethod is inflated for constrained calls.
10078
10079         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
10080
10081 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
10082
10083         * Makefile.am: Add build rules for ppc64.
10084         This avoids the build failing at pedump with unresolved symbols
10085         due to lack of arch_sources. Instead it will now fail earlier
10086         due to lack of cpu-ppc64.md.
10087
10088         Contributed under MIT/X11 license.
10089
10090 2008-10-04  Mark Probst  <mark.probst@gmail.com>
10091
10092         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
10093         tail calls.
10094
10095         * iltests.il.in: Add test case for tail call with many arguments.
10096
10097 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10098
10099         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
10100         to the fast virtual generic method code until the aot case is fixed.
10101
10102 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10103
10104         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
10105
10106 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10107
10108         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
10109         thunks.
10110
10111 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10112         
10113         * simd-intrinsics.c: Forgot to add this one.
10114
10115         * mini-codegen.c: Fix macro in case SIMD is not supported.
10116
10117 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10118         
10119         This patch land initial JIT support for simd intrinsics.
10120
10121         * mini-x86.h: Added new define to make --enable_minimal work on x86.
10122
10123         * Makefile.am: Added simd-intrinsics.c
10124
10125         * simd-intrinsics.c: New file with simd instrinsic related
10126         code.
10127
10128         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
10129
10130         * cpu-x86.md: Add simd related instructions.
10131
10132         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
10133
10134         * driver.c: Added two new --regression variants.
10135
10136         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
10137
10138         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
10139
10140         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
10141         extract some complicated logic to helper functions.
10142
10143         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
10144
10145         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
10146
10147         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
10148         the specialized simplification pass.
10149
10150         * method-to-ir.c (mono_spill_global_vars): Use new macro.
10151
10152         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
10153
10154         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
10155         table.
10156
10157         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
10158         if MONO_ARCH_NEED_SIMD_BANK is defined.
10159
10160         * mini-ops.h: Added the new simd ops.
10161
10162         * mini-x86.c: Added mono_arch_xregname.
10163
10164         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
10165
10166         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
10167
10168         * mini-x86.h: Define simd related MONO_ARCH macros.
10169
10170         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
10171
10172         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
10173
10174         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
10175         MONO_CLASS_IS_SIMD to deal with simd related IR.
10176
10177         * mini.h (MonoInst): Added spill_var to the backend union.
10178
10179         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
10180
10181         * mini.h: Added forward declarations of the new simd fuctions.
10182
10183         * optflags-def.h: Added new optimization names SIMD.
10184
10185         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
10186
10187         * regalloc.h: Added support for working with 3 register banks.
10188
10189         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
10190
10191         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
10192
10193 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
10194
10195         * mini-exceptions.c: remove 64 bit related ifdef clutter.
10196
10197 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10198
10199         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
10200         instead of one on 64 bit systems.
10201
10202         * method-to-ir.c: Remove unused includes.
10203
10204 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
10205
10206         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
10207         cfg->used_int_regs, since the two are different on arm.
10208
10209 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10210
10211         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10212         mono_method_get_vtable_index() to get the vtable index.
10213
10214 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10215
10216         * method-to-ir.c (mono_method_to_ir2): Don't create native
10217         wrappers for array methods, because they're never called (and if
10218         they were called they wouldn't work).
10219
10220 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10221
10222         * method-to-ir.c (mono_method_to_ir2): Array methods are
10223         special-cased and must not be invoked indirectly via the (M)RGCTX
10224         when generic sharing is turned on.  Fixes #431413.
10225
10226 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10227
10228         * method-to-ir.c: When generic sharing is active, call
10229         non-interface virtual generic methods via the standard trampoline.
10230
10231         * mini-trampolines.c: Handle virtual generic shared methods.
10232
10233         * mini.h, mini-x86.c, mini-x86.h: New argument for
10234         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10235         method thunks and which is the trampoline to call if the lookup
10236         fails.  Enable the virtual generic method thunk for x86.
10237
10238         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10239         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10240         argument but assert that it's NULL, because these archs don't yet
10241         implement the virtual generic method thunk.  Changes in the IMT
10242         thunk data structures.
10243
10244 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10245
10246         * aot-compiler.c (emit_globals): Avoid invalid characters in
10247         the static linking symbol.
10248
10249         * objects.cs: Add a test for the range check optimization. Fix warnings.
10250
10251         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10252         optimization from the current JIT.
10253
10254         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10255         later in decompose_array_access_opts () to allow more optimizations.
10256
10257         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10258         mono_decompose_soft_float () for consistency.
10259
10260         * mini-ops.h: Fix arguments of OP_STRLEN.
10261
10262         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10263         into a separate function.
10264         (reset_cast_details): Ditto.
10265         (handle_unbox): Save cast details. Fixes #431254.
10266
10267         * method-to-ir.c: Remove some obsolete FIXMEs.
10268
10269 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10270
10271         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10272
10273 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10274
10275         * mini-codegen.c: More work on macros to make them
10276         ready for multiple regbanks.
10277
10278 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10279
10280         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10281
10282         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10283
10284 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10285
10286         * mini-codegen.c (mono_spillvar_offset): Proper support for
10287         multiple regbanks.
10288
10289 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10290
10291         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10292         the stack overflow changes.
10293
10294 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10295
10296         * mini-codegen.c: Make all bank macros depend on reg_bank.
10297
10298         * mini-codegen.c (mono_local_regalloc): Make free mask
10299         initialization regbank aware.
10300
10301 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10302
10303         * mini-codegen.c (mono_local_regalloc): Extract callee
10304         mask selection to a function and make it regbank aware.
10305
10306 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10307
10308         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10309         code to deal with many regbanks.
10310
10311 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10312
10313         * mini-codegen.c: More fp->regbank changes.
10314
10315 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10316
10317         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10318         of a hardcoded constant.
10319
10320 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10321
10322         * method-to-ir.c (type_from_stack_type): Fix typo.
10323
10324 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10325
10326         * mini-ia64.c (emit_move_return_value): Convert float return values to
10327         double.
10328
10329         * objects.cs: Add a new test.
10330         
10331         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10332         VARARG methods to fix an assert later.
10333
10334         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10335         end so it at least compiles.
10336
10337 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10338
10339         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10340
10341 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10342
10343         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10344         optimization to a new function (emit_optimized_ldloca_ir) and enable
10345         it for both ldloca and ldloca_s.
10346
10347 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10348
10349         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10350         gshared CASTCLASS code.
10351
10352         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10353         amd64, where the libc stack unwinder encounters stack frames referring to
10354         native code in unmapped memory.
10355
10356         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10357         sharing.
10358
10359         * generics.cs: Add new test.
10360
10361 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10362
10363         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10364         add a check that one of the ARM_FPU_ constants is defined.
10365
10366         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10367         
10368         * mini-exceptions.c: Fix build on non-altstack platforms.
10369
10370         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10371         sharing of vtypes.
10372
10373         * ir-emit.h: Add a comment to NEW_PCONST.
10374
10375         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10376
10377         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10378
10379         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10380         after the changes to MonoJitDomainInfo.
10381
10382 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10383
10384         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10385
10386 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10387
10388         * mini-ppc.c: Compiler warning fixes.
10389
10390 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10391
10392         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10393         for pinvokes.
10394
10395 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10396
10397         * exceptions-ppc.c, mini-ppc.h: Compile
10398         mono_arch_handle_altstack_exception() on Darwin, too.
10399
10400 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10401
10402         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10403         work on archs which don't have generic sharing implemented, only
10404         without the vtable_arg.
10405
10406 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10407
10408         * mini.c: Added comment explaining why delegate ctor icall
10409         wrappers are compiled.
10410
10411 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10412
10413         * mini.c: Don't produce trampolines to delegate ctor icall
10414         wrappers but compile them upfront.
10415
10416 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10417
10418         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10419         runtime-set function when going back to managed code. Currently this
10420         is used to set back the protection on the soft ovf pages and/or to
10421         throw the stack overflow exception that happened in unmanaged code.
10422
10423 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10424
10425         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10426         runtime-set function when going back to managed code. Currently this
10427         is used to set back the protection on the soft ovf pages and/or to
10428         throw the stack overflow exception that happened in unmanaged code.
10429
10430 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10431
10432         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10433         the support code for restoring stack protection after stack overflows
10434         that happen in unmanaged code. Don't set the exec permission on the
10435         soft overflow area.
10436
10437 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10438
10439         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10440         delegate->method_ptr is set. Fixes #428054.
10441
10442 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10443
10444         * tests.cs: Rename to ratests.cs.
10445
10446         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10447         emit_get_rgctx_... functions.
10448
10449 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10450
10451         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10452
10453 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10454
10455         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10456         before asserting that method is sharable.
10457
10458 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10459
10460         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10461         whether method needs a static RGCTX wrapper used instead of
10462         complex conditions.
10463
10464         * generic-sharing.c, mini.h: A few functions moved to
10465         metadata/generic-sharing.c.
10466
10467 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10468
10469         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10470         Generic code sharing for value types, which essentially means
10471         treating value type methods like static methods.  The RGCTX is
10472         passed in the same way.
10473
10474 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10475
10476         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10477         opcode when creating multi-dimensional arrays of open types.
10478
10479         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10480         open generic types.
10481
10482         * generics.cs: Add a test.
10483
10484         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10485
10486 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10487
10488         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10489
10490         * mini.c (mini_method_compile): Set it when running under the debugger. 
10491
10492         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10493         vreg optimization if the flag is set.
10494
10495         * driver.c (mono_main): Add --attach= option to pass options to
10496         the attach agent.
10497
10498         * mini.c (sigquit_signal_handler): Start the attach agent.
10499
10500         * ssapre.c: Disable this to save space since it is not yet ported to
10501         linear IR.
10502
10503         * regalloc2.c: Disable this to save space.
10504
10505         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10506
10507 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10508
10509         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10510         the -v option useful again.
10511
10512 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10513
10514         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10515         --break-at-bb.
10516
10517         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10518         arrays of arrays. Fixes #428406.
10519
10520         * method-to-ir.c (mini_emit_castclass): Ditto.
10521
10522         * objects.cs: Add new test.
10523         
10524 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10525
10526         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10527         was wrong at it choked against target_type_is_incompatible for byref types.
10528
10529 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10530
10531         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10532         places.
10533
10534 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10535
10536         * mini-exceptions.c: update a few more exceptions-related counters.
10537
10538 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10539
10540         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10541         new functions to allocate from persistent mempools.
10542
10543 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10544
10545         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10546         multiple register banks in the future.
10547
10548         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10549
10550 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10551
10552         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10553
10554         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10555
10556         * mini.h: Export type_to_eval_stack_type.
10557
10558         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10559         is only ins->klass of byref types.
10560
10561 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10562
10563         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10564         (mini_emit_memcpy2): Ditto.
10565
10566         * mini-amd64.c: Fix a warning.
10567
10568 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10569
10570         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10571         linking.
10572
10573 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10574
10575         * method-to-ir.c: Extract stloc micro-optimization to a
10576         function and apply it to all cases.
10577
10578 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10579
10580         * method-to-ir.c: Don't fail generic code sharing in cases we
10581         already support.
10582
10583 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10584
10585         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10586
10587 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10588
10589         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10590         implementation.
10591
10592 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10593
10594         * trace.c: make tracing more useful and correct, with per-thread
10595         id and indent info.
10596
10597 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10598
10599         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10600         doing a method call and the argument is an R4.
10601
10602 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10603
10604         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10605         generic methods.
10606
10607 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10608
10609         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10610
10611 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10612
10613         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10614         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10615
10616 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10617
10618         * driver.c: Add a --agent argument (not supported yet) to load managed
10619         agent assemblies before loading the main assembly, similarly to how the
10620         Java VM handles agents.
10621
10622 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10623
10624         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10625         function to do stack layout of local variables.
10626
10627 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10628
10629         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10630         calculation.
10631
10632 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10633
10634         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10635         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10636         JIT if DISABLE_JIT is defined.
10637
10638         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10639         defined.
10640
10641 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10642
10643         * iltests.il.in: Disable the fconv test on PPC (the result is
10644         undefined according to ECMA).
10645
10646 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10647
10648         * iltests.il.in: Enable tail call tests for PPC.
10649
10650         * mini.h: Add variable for storing incoming valuetype argument
10651         addresses for tail calls.
10652
10653         * mini-ppc.c: Implement valuetype arguments and return values for
10654         tailcalls on Linux.
10655
10656 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10657
10658         * mini-ppc.c: Partially implement tail calls (struct arguments and
10659         return values not supported).
10660
10661         * method-to-ir.c: Enable tail calls on PPC.
10662
10663 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10664
10665         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10666         runtime-invoke wrappers to work around the problem of them getting
10667         assigned to a random class.
10668
10669         * aot-runtime.c (mono_aot_get_method): Ditto.
10670         
10671 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10672
10673         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10674         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10675
10676 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10677
10678         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10679         until they're implemented properly.
10680
10681         * exceptions-ppc.c: Use arch-independent exception-handling code
10682         instead of custom one.
10683
10684         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10685         for Linear IR.
10686
10687         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10688
10689         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10690         applies when __powerpc__ is defined.
10691
10692 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10693
10694         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10695         methods to their code to avoid computing the full name of wrappers and
10696         doing a lookup in a string hash table.
10697
10698 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10699
10700         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10701         we identify bblocks before method_to_ir () is ran.
10702
10703         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10704         Also avoid optimizing branches pointing to themselves.
10705
10706         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10707
10708 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10709
10710         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10711
10712 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10713
10714         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10715         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10716         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10717         'buf'.
10718
10719         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10720         jumped to the same entry in plt_jump_table.
10721
10722 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10723
10724         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10725         dynamic images.
10726
10727 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10728
10729         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10730         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10731         #421807.
10732
10733 2008-08-29  Geoff Norton  <gnorton@novell.com>
10734
10735         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10736         segment, and doesn't properly handle .space as .text.  Fixes
10737         AOT Mach/ARM
10738
10739 2008-08-29  Geoff Norton  <gnorton@novell.com>
10740
10741         * mini.c: Disable the mach exception handler when running on 
10742         ARM
10743
10744 2008-08-29  Geoff Norton  <gnorton@novell.com>
10745
10746         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10747         globals on Darwin/ARM
10748
10749 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10750
10751         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10752         since too many things depend on it. Instead, call 
10753         mono_runtime_set_no_exec ().
10754         
10755         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10756         the new JIT.
10757
10758         * aot-compiler.c: Add an 'asm-only' AOT option.
10759
10760         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10761                 
10762         * aot-compiler.c (compile_method): Disable gshared support for now as it
10763         doesn't yet work.
10764
10765 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10766
10767         * mini-amd64.h : Fix a compiler warning.
10768
10769         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10770           Changed to use a callback function to retrieve the unwind info.
10771           This avoids problems observed when code blocks were removed by
10772           unloading an app domain.
10773
10774         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10775           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10776           to work properly.
10777
10778         Contributed under MIT/X11 license.
10779
10780 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10781
10782         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10783           case to keep the stack aligned to 8.
10784
10785         Contributed under MIT/X11 license.
10786
10787 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10788
10789         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10790         avoid repeated linear searches.
10791
10792 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10793
10794         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10795         methods it can't handle.
10796         
10797         * aot-compiler.c (add_method): Avoid adding a method twice.
10798         (add_wrappers): Add runtime invoke wrappers for all methods.
10799
10800         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10801         function to create an aot-compatible version of this trampoline.
10802
10803         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10804
10805 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10806
10807         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10808
10809         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10810         with a generic sharing failure.
10811
10812         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10813
10814         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10815         CEE_RETHROW. Fixes #419634.
10816
10817         * mini.c (mono_method_to_ir): Ditto.
10818
10819         * exceptions.cs: Add a new test.
10820         
10821         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10822         to mono_type_stack_size_internal () since some callers might not pass in
10823         an rgctx.
10824
10825         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10826         instrument_prolog. Fixes #419878.
10827
10828         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10829         doubles in soft float mode volatile.
10830
10831 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10832
10833         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10834
10835         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10836         to handle soft float correctly.
10837
10838         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10839         the fast path.
10840
10841         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10842
10843         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10844         to sp, since the generics catch code requires it.
10845
10846         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10847         copying.
10848
10849         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10850         mono_arch_emit_imt_argument ().
10851
10852         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10853
10854         * mini-arm.c tramp-arm.c: Generic sharing updates.
10855
10856 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10857
10858         * mini-arm.c: Fix the arm build.
10859
10860         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10861         handling enums, generic instances and generic sharing.
10862         (mini_type_stack_size_full): Ditto.
10863
10864         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10865         
10866         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10867
10868         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10869
10870         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10871         trampolines.
10872
10873         * mini-arm.c: Various small generic sharing changes.
10874
10875         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10876         this for x86.
10877         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10878         custom code.
10879
10880         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10881         helper function to return a generic class init trampoline.
10882
10883         * method-to-ir.c mini.c: Use it.
10884         
10885         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10886         arch-specfic function to return a generic class init trampoline.
10887
10888         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10889         the GENERIC_CLASS_INIT custom code.
10890
10891         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10892         a fatal error, not a sharing failure.
10893
10894         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10895         needed.
10896
10897         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10898         trampoline argument from MONO_ARCH_VTABLE_REG.
10899
10900         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10901         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10902         argument, and pass the vtable in VTABLE_REG.
10903
10904         * tramp-amd64.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         (mono_arch_create_trampoline_code_full): Remove some special casing for
10908         the rgctx fetch trampoline.
10909
10910         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10911         Fixes #419273.
10912
10913         * iltests.il: Add a test for it.
10914
10915 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10916
10917         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10918
10919         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10920         no longer needed.
10921
10922         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10923         use mono_jit_info_table_find () to avoid recursion.
10924         (mono_delegate_trampoline): Add a sync wrapper here.
10925
10926         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10927         here.
10928
10929         * mini.c (mono_method_to_ir): Ditto.
10930         
10931         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10932         add_sync_wrapper argument. Don't add a sync wrapper here.
10933         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10934
10935         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10936         
10937 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10938
10939         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10940           of nonvolatile registers back from MonoContext to CONTEXT.
10941
10942         Contributed under MIT/X11 license.
10943
10944 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10945
10946         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10947           arguments on Winx64 there are only 4 argument registers.  For this
10948           logic to work the last argument must be pulled from the stack.  
10949
10950         Contributed under MIT/X11 license.
10951
10952 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10953
10954         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10955
10956         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10957         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10958         encode/decode_method_ref ().
10959
10960         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10961
10962         * aot-runtime.c (decode_patch): Ditto.  
10963
10964         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10965         MONO_PATCH_INFO_METHOD.
10966
10967         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10968         MonoGenericJitInfo.
10969
10970         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10971         MonoGenericJitInfo.
10972
10973         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10974
10975         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10976         one from the caller.
10977
10978         * aot-runtime.c (decode_generic_inst): New function to decode and
10979         return a interned generic inst.
10980         (decode_klass_ref): Use it.
10981         (decode_method_ref): Ditto.
10982
10983         * aot-compiler.c (emit_exception_debug_info): Save 
10984         jinfo->has_generic_jit_info too.
10985
10986 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10987
10988         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10989
10990         * iltests.il.in: Add a test for fconv_to_i.
10991
10992         * liveness.c: Disable the liveness2 pass for now to save space.
10993
10994         * regalloc2.c: Include mempool-internals.h to fix warnings.
10995
10996         * aot-compiler.c (encode_method_ref): Encode the context of generic
10997         instance methods.
10998
10999         * aot-runtime.c (decode_method_ref): Inflate generic methods using
11000         the context saved in the aot file.
11001
11002         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
11003
11004         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
11005
11006         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
11007         volatile so they won't be optimized away.
11008
11009 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
11010
11011         * ssa.c:
11012         * ssa2.c:
11013         * mini.c:
11014         * regalloc2.c:
11015         * dominators.c: Remove duplicated functions that now are in
11016         mempool-internals.h.
11017
11018 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
11019
11020         * aot-compiler.c: Fix warnings.
11021
11022         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
11023
11024         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
11025
11026         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
11027         as the patch type.
11028
11029         * mini.c (mono_resolve_patch_target): Ditto.
11030         
11031         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
11032         (encode_klass_ref): Add support for encoding VARs/MVARs.
11033
11034         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
11035
11036         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
11037         the handling of the got entries into a separate 'decode_got_entry' function.
11038         Add support for RGCTX_FETCH.
11039
11040         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
11041         clobbered by the trampoline code.
11042
11043         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
11044         not clobbered by the indirect calling code.
11045
11046 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
11047
11048         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
11049         to fix the build.
11050
11051 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
11052
11053         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
11054         signature using the compilation mempool otherwise we would leak it.
11055
11056 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
11057
11058         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
11059         mono_emit_abs_call ().
11060
11061         * patch-info.h: Add GENERIC_CLASS_INIT.
11062
11063         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
11064
11065         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
11066         as their target as a near call.
11067
11068         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
11069         ABS handling code.
11070         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
11071
11072         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
11073         call to a runtime function described by a patch.
11074
11075         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
11076         mono_emit_abs_call, this has the advantage that the ABS handling code in
11077         mono_codegen () can handle them both, and can handle other stuff in the
11078         future without additional code.
11079
11080         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
11081         entry.
11082         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
11083         abs addresses.
11084
11085         * mini.h: Add missing bblock related prototypes.
11086
11087         * mini.h (MonoCompile): Remove unused reverse_inst_list and
11088         reverse_inst_list_len fields.
11089
11090         * mini.c: Refactor this file a bit by moving branch optimizations to 
11091         branch-opts.c.
11092
11093         * method-to-ir.c: Merge generic sharing changes missed earlier.
11094
11095         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
11096
11097         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
11098         shared patches. Process METHODCONST as a shared patch.
11099
11100         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
11101         as it crashes on the 2.0 mscorlib.
11102
11103         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
11104         to cause crashes.
11105         
11106         * aot-compiler.c: Use is_plt_patch () in a few additional places.
11107         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
11108         by IMT.
11109
11110         * aot-compiler.c: Reorganize the got handling code to be a bit more
11111         understandable.
11112
11113 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11114
11115         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
11116         mono_patch_info_equals/hash, and use it to massively simplify
11117         get_plt_index ().
11118
11119         * mini.c (mono_patch_info_hash): Simplify this and add support for
11120         more patch types.
11121
11122         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
11123
11124         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
11125         handling code, since an offset is not enough to identify a trampoline.
11126
11127         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
11128
11129 2008-08-17  Mark Probst  <mark.probst@gmail.com>
11130
11131         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
11132
11133         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
11134
11135         * mini-ops.h: Argument and result types for OVF_CARRY ops.
11136
11137         * decompose.c: PPC decompositions for various ops.
11138
11139         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
11140
11141 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11142
11143         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
11144         call the generic trampoline code using a call, instead of a jump, to
11145         remove some special casing from the generic trampoline code.
11146
11147         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
11148         (mono_codegen): Ditto.
11149
11150         * aot-compiler.c aot-runtime.c: Ditto.
11151
11152         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
11153
11154         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
11155         helper function to find the offset corresponding to a lazy fetch trampoline.
11156
11157         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
11158         when doing generic sharing.
11159
11160         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
11161         places.
11162         
11163         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
11164         mini-trampolines.c to be with the other trampoline creation functions.
11165
11166         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
11167         as it is equal to method->signature in most cases, add a 
11168         mono_emit_method_call_full variant which takes a signature and an imt
11169         argument as well.
11170
11171 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
11172
11173         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
11174         to this function, since it could be computed easily from the method 
11175         argument.
11176         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
11177         more.
11178
11179         * method-to-ir.c mini.c: Remove references to 
11180         compile_generic_method_wo_context.
11181
11182         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
11183         generic method calls.
11184         
11185         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
11186         dimensional non-szarrays.
11187
11188         * mini.c (mini_init): Register mono_array_new_1.
11189
11190         * jit-icalls.c (mono_array_new_1): New jit icall.
11191
11192         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
11193         pointing to the method.
11194
11195         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
11196         method addresses belonging to METHOD_JUMP patches in the 
11197         jump_target_got_slot_hash.
11198         (mono_aot_load_method): Ditto.
11199
11200         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
11201         METHOD_JUMP patches.
11202
11203         * mini.c (mini_create_jit_domain_info): New helper function which 
11204         initializes/frees domain->runtime_info.
11205         (mini_free_jit_domain_info): Ditto.
11206         (mini_init): Install the domain hook functions with the runtime.
11207
11208         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11209         information maintained by the JIT.
11210
11211         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11212         insertion into jump_table_hash into mono_codegen (), also implement proper
11213         locking.
11214
11215         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11216         tail calls, it is already done by the aot code.
11217         
11218         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11219         mechanism on amd64.
11220
11221         * iltests.il.in: Make the jmp test a bit more complex.
11222
11223         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11224         generic instances which doesn't have a token.
11225
11226         * aot-runtime.c (decode_method_ref): Ditto.
11227         
11228         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11229         can handle this case now.
11230         (handle_box): Ditto.
11231
11232 2008-08-15  Geoff Norton  <gnorton@novell.com>
11233
11234         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11235         debugging check.
11236
11237 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11238
11239         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11240         calling generic methods.
11241
11242         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11243
11244         * aot-runtime.c (decode_patch_info): Ditto.
11245
11246         * mini.c (mono_resolve_patch_target): Ditto.
11247         
11248         * patch-info.h: Add METHOD_RGCTX.
11249
11250         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11251
11252 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11253
11254         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11255         arguments in registers.
11256
11257         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11258         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11259
11260         * mini.c (mini_method_compile): Abort aot compilation for generic
11261         methods if generic sharing is disabled.
11262         
11263         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11264         an mrgctx.
11265
11266         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11267         requiring an mrgctx.
11268
11269         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11270         store instructions when converting a vcall to a normal call.
11271
11272         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11273         mono_arch_find_jit_info.
11274
11275 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11276
11277         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11278         avoid calling mono_method_full_name () for every method even if the
11279         env var is not set.
11280         (check_inline_caller_method_name_limit): Ditto.
11281
11282 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11283
11284         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11285         assemblies in one run.
11286
11287         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11288         skipped methods if it is not 0.
11289
11290         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11291
11292 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11293
11294         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11295           MONO_ARCH_HAVE_UNWIND_TABLE.
11296
11297         Contributed under MIT/X11 license.
11298
11299 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11300
11301         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11302           from default optimizaton list on Winx64.
11303
11304         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11305
11306         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11307           the LMF from the MonoJitTlsData structure.
11308
11309         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11310
11311         Contributed under MIT/X11 license.
11312
11313 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11314
11315         * mini.c (sigsegv_signal_handler): Fix the build.
11316
11317         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11318         assembly->aot_module.
11319
11320         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11321         hash table. This simplifies and speeds up a lot of code, and fixes support
11322         for .netmodules.
11323
11324         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11325         with the runtime.
11326
11327         * mini-exceptions.c: Ditto.
11328         
11329         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11330         'native_offset' argument, since these are computed in the 
11331         mono_find_jit_info () function.
11332
11333         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11334         is used by exceptions-ppc.c.
11335
11336         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11337         mono_arch_find_jit_info ().
11338         
11339         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11340         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11341         generic code in mini-exceptions.c.
11342
11343 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11344
11345         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11346
11347         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11348         
11349         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11350         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11351         called while holding the loader lock. Fixes #415608.
11352         (mono_aot_get_method_from_token_inner): Ditto.
11353
11354 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11355
11356         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11357         to reduce differences between this and the generic implementation in
11358         mini-exceptions.c.
11359         (ves_icall_get_frame_info): Ditto.
11360
11361         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11362
11363         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11364         longer neccesarry.
11365
11366         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11367         mono_arch_get_call_filter () and make it non-static, for consistency with the
11368         other architectures.
11369
11370 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11371
11372         * mini.c:
11373         * local-propagation.c:
11374         * mini-x86.c: Correct the name of arch defines.
11375
11376 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11377
11378         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11379         NO_EMULATE_LONG_SHIFT_OPS define.
11380
11381 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11382
11383         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11384         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11385
11386         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11387         MACH fixes. Merged from the 2.0 branch.
11388
11389         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11390
11391         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11392         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11393
11394         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11395
11396         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11397         mono_marshal_get_native_wrapper () signature changes.
11398
11399 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11400
11401         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11402         conversion bug under arm.
11403
11404 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11405
11406         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11407
11408         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11409         with overflow checking.
11410
11411 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11412
11413         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11414         to the genmdesc.pl file
11415
11416 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11417
11418         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11419         arg_array in the soft-float versions of the LOAD/STORE macros.
11420
11421         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11422         implementation.
11423
11424         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11425
11426 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11427
11428         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11429         a float HFA. Fixes #413621.
11430
11431 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11432
11433         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11434         frame_size to args_size. Fixes build.
11435
11436 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11437
11438         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11439         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11440
11441         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11442         the stack are not unaligned. Fixes #413247.
11443         
11444 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11445
11446         * mini.c: update jitted methods performance counters.
11447
11448 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11449
11450         * mini-exceptions.c: increase the exceptions thrown performance
11451         counter in mono_handle_exception ().
11452
11453 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11454
11455         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11456         can work with netmodules.
11457
11458 2008-07-28  Geoff Norton  <gnorton@novell.com>
11459
11460         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11461         regression tests.
11462
11463 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11464
11465         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11466         correct place.
11467
11468 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11469
11470         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11471           The float param registers and other param registers must be the 
11472           same index on Windows x64.
11473
11474         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11475           ArgValuetypeAddrInIReg argument case.  Setting the argument
11476           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11477
11478         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11479           variable computed above as the copy length for arguments of storage
11480           type ArgValuetypeAddrInIReg.
11481
11482         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11483           ArgValuetypeAddrInIReg argument case.  This case will rely on
11484           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11485
11486         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11487           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11488           jump and tail call instructoins as they do not follow the typical call behavior.
11489
11490         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11491           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11492           local variable and pass the local variable by reference to the called method.
11493
11494         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11495           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11496           of a struct is passed in a register it must be saved with the other
11497           volatile argument on the stack.
11498
11499         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11500           frame pointer the stack adjustment value must be saved to the unwind 
11501           info structure.
11502
11503         Contributed under MIT/X11 license.
11504
11505 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11506
11507         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11508         which got lost in the merge.
11509
11510 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11511
11512         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11513         build.
11514
11515         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11516         
11517         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11518         icalls, since they won't be patched.
11519
11520         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11521         different code sequence when running under valgrind to prevent some valgrind
11522         errors.
11523
11524         * iltests.il.in: Add new regression test.
11525
11526         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11527         end with a throw.
11528
11529         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11530         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11531
11532         * iltests.il.in: Add new test.
11533
11534         * aot-compiler.c: Fix some warnings.
11535
11536         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11537         Fixes #412494.
11538
11539 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11540
11541         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11542         (mini_usage_jitdeveloper): Add a missing --wapi option.
11543
11544 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11545
11546         * mini-codegen.c: Simplify the is_fp macros.
11547         (free_up_ireg): Remove, use free_up_reg instead.
11548         (free_up_reg): Fix the fp case.
11549
11550 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11551
11552         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11553         lowered earlier.
11554
11555         * exceptions-x86.c: Merge some changes which seemed to have got lost
11556         in the linear-ir merge.
11557
11558         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11559
11560         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11561         long vreg volatile even if the variable was already created.
11562
11563         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11564         volatile variables.
11565
11566 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11567
11568         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11569
11570         * mini.c (mono_jit_compile_method_inner): Add support for 
11571         MONO_EXCEPTION_BAD_IMAGE.
11572
11573         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11574         mini_method_get_context () returns NULL. Fixes #356531.
11575
11576         * mini.c (mono_method_to_ir): Ditto.
11577         
11578         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11579         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11580
11581 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11582
11583         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11584         in the LDFTN implementation.
11585
11586 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11587
11588         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11589         code, patch calls to icalls, too, even if they're not in the
11590         shared generic code hash.  Fixes #411962.
11591
11592 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11593
11594         * cpu-x86.md: Increase the length of the fcall opcodes.
11595
11596         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11597         calls returning floats.
11598
11599         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11600         on NEWARR.
11601         
11602         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11603         missed earlier.
11604
11605         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11606         into the domain->method_code_hash.
11607
11608         * aot-compiler.c: Fix win32 build.
11609
11610         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11611         
11612         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11613         gshared NEWARR implementation.
11614
11615         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11616
11617         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11618         can be used outside of method_to_ir.
11619
11620         * mini.h (MonoCompile): Add arg_types field.
11621
11622         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11623         
11624         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11625         the values of the local arg_array and param_types array.
11626
11627 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11628
11629         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11630         got accesses might only get generated later when NEWOBJ is decomposed.
11631         
11632         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11633         looking up the native code of the target method when a delegate is called
11634         for the first time.
11635
11636         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11637         optimization.
11638
11639         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11640
11641         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11642         AOT work on platforms without a working dlsym implementation.
11643
11644         * mini.h: Bump AOT image format version.
11645         
11646 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11647
11648         * mini-exceptions.c: Free a MonoType with
11649         mono_metadata_free_type() instead of g_free().
11650
11651         * aot-runtime.c: Free a MonoType.
11652
11653 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11654
11655         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11656         optimization.
11657
11658         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11659         fp stack on x86.
11660
11661 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11662         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11663         profiler hook.
11664
11665 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11666
11667         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11668         NEWOBJ calls on valuetypes.
11669
11670         * iltests.il.in: Add new test.
11671
11672         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11673
11674 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11675
11676         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11677         is no longer needed.
11678
11679         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11680         non register sized integer arguments.
11681         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11682         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11683         emit_memcpy2 ().
11684
11685         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11686         CEE_MONO_RETOBJ.
11687         
11688         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11689         two a binop with different sized arguments is emitted.
11690
11691         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11692         instruction in the ins==NULL case.
11693
11694 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11695
11696         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11697
11698         * mini-x86.c: Fix osx build.
11699
11700         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11701         opcodes as well.
11702
11703         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11704         instruction for non int sized variables.
11705
11706         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11707         implementation.
11708
11709 2008-07-23  Robert Jordan  <robertj@gmx.net>
11710
11711         * method-to-ir.c: Fix MSVC build.
11712
11713 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11714
11715         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11716         a non int sized type, widen it to an int since newer versions of gcc seem to
11717         generate code which needs this.
11718
11719         * ssa2.c abcremoval2.c: Fix warnings.
11720
11721         * *: Merge the Linear IR branch.
11722
11723         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11724         the ChangeLog file there describes all the changes done over the years. 
11725         Further documentation can be found at www.mono-project.com/Linear_IL.
11726
11727 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11728
11729         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11730           The float param registers and other param registers must be the 
11731           same index on Windows x64.
11732
11733         Contributed under MIT/X11 license.
11734
11735 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11736
11737         * mini.c: Make the previous fix GC safe.
11738
11739 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11740
11741         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11742
11743 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11744
11745         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11746           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11747           ArgValuetypeAddrInIReg instead.
11748
11749         Contributed under MIT/X11 license.
11750
11751 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11752
11753         * mini-codegen.c (get_register_spilling): Fix a warning.
11754
11755 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11756
11757         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11758         for types which the initialization fails. Raises the provided exception
11759         at the right stop after cleanup.
11760
11761 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11762
11763         * aot-compiler.c: Free most of the memory allocated during compilation.
11764
11765         * mini.c (mini_parse_debug_options): Fix a leak.
11766         
11767         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11768         during aot compilation.
11769
11770 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11771
11772         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11773         it has too much register pressure.
11774
11775 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11776
11777         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11778
11779 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11780
11781         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11782         on x86.
11783
11784         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11785         on amd64 similar to the way it is done on arm.
11786
11787         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11788
11789         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11790         consistency, normalize error messages, avoid loading aot-only modules in
11791         normal mode.
11792
11793         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11794         for consistency.
11795
11796         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11797
11798 2008-07-11  Martin Baulig  <martin@ximian.com>
11799
11800         * debug-debugger.h
11801         (MonoDebuggerInfo): Add `interruption_request'.
11802
11803 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11804
11805         * aot-compiler.c (emit_plt): Remove some dead code.
11806
11807         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11808
11809         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11810         return the plt info offset belonging to a given plt entry.
11811
11812         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11813         mono_aot_get_plt_info_offset.
11814         
11815         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11816         similar to the amd64 code by makeing jumps through a separate jump table 
11817         instead of embedding the jump addresses into the code.
11818
11819 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11820
11821         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11822         method.
11823
11824 2008-07-10  Martin Baulig  <martin@ximian.com>
11825
11826         * mini.c (mini_method_compile): Disable generics sharing when
11827         running in the debugger.
11828
11829 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11830
11831         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11832
11833         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11834         the local register allocator from running out of registers on x86 when 
11835         using aot.
11836
11837 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11838
11839         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11840         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11841         C4146.
11842
11843         Contributed under MIT/X11 license.
11844
11845 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11846
11847         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11848         speed up the assembler.
11849
11850 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11851
11852         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11853         support.
11854
11855         * mini.c: Move the soft float handling macros a bit earlier, add 
11856         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11857         place.
11858
11859         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11860
11861         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11862         read-only to help catch code allocation requests.
11863         
11864         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11865         and turn it off when using --aot-only or when compiling with --aot=full.
11866
11867         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11868         jump table for switches from the normal domain mempool, not the code
11869         manager.
11870
11871         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11872         unbox trampoline which handles aot-only mode too.
11873
11874         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11875         an AOTed unbox trampoline.
11876
11877         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11878
11879 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11880
11881         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11882         ""
11883
11884         Contributed under MIT/X11 license.
11885
11886 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11887
11888         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11889           the unwind information for the method at the end of the allocated block.
11890           
11891         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11892           MonoCompileArch to hold the unwind info for SEH on Winx64
11893         
11894         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11895           frame pointer info for the method being compiled.
11896           
11897         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11898           the call to mono_exception_from_token.
11899           
11900         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11901           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11902           information is stored a the end of the method block because it is all 32-bit offset based.
11903
11904         Contributed under MIT/X11 license.
11905
11906 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11907
11908         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11909
11910         * wapihandles.c: Fix warnings.
11911
11912         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11913         mode.
11914
11915         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11916         mono_jit_compile_method in aot-only mode since that calls the type 
11917         initializer.
11918         
11919         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11920         get_delegate_invoke_impl in aot-only mode.
11921
11922         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11923
11924 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11925
11926         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11927
11928         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11929         is on by default.
11930
11931         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11932
11933         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11934         init trampoline from the AOT file as well.
11935
11936         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11937         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11938         code.
11939
11940         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11941         mono_init.
11942
11943         * exceptions-amd64.c: Add _full variants for the remaining exception code
11944         creation functions as well, allow emission of relocatable code, remove
11945         caching since that is now done by the caller.
11946
11947         * mini-exceptions.c: Add _full variants for the remaining exception code
11948         creation functions as well, add aot-only support.
11949
11950         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11951         if we can determine a proper token for them.
11952         (add_wrappers): Add a few more wrappers.
11953         (emit_method_code): Remove some dead code.
11954         (emit_trampolines): Emit exception code too.
11955
11956         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11957
11958         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11959         mono_array_new_va which avoids varargs.
11960
11961         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11962
11963         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11964         mono_arch_create_specific_trampoline () in all places.
11965
11966         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11967         a bit so it can be used for other things as well.
11968         
11969         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11970         on demand as well.
11971
11972         * exceptions-amd64.c: Rename the caching from the exception code creation
11973         functions, it is done by the caller instead.
11974         
11975         * exceptions-amd64.c: Change the signature of the exception code creation 
11976         functions to allow the creation of relocatable code later.
11977
11978         * mini-exceptions.c: Add a set of functions to query the various 
11979         runtime-generated exception functions.
11980
11981         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11982         mono_arch_.. () functions.
11983         
11984 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11985
11986         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11987
11988         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11989
11990         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11991         (mini_get_vtable_trampoline): Ditto.
11992
11993         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11994         code in the AOT case by returning the code size and a list of relocations to
11995         the caller.
11996
11997         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11998
11999 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
12000
12001         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
12002           clean the stack.
12003
12004         Contributed under MIT/X11 license.
12005
12006 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
12007
12008         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
12009         so the buffer size can be computed correctly. Fixes #404735.
12010
12011         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
12012         normally as cfg->debug_info is already freed.
12013
12014 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
12015
12016         * mini-amd64.c: For calls returning vtypes in registers, don't store
12017         the return address on the stack, instead allocate a separate local for
12018         it. Fixes #404729.
12019
12020 2008-07-05  Mark Probst  <mark.probst@gmail.com>
12021
12022         * mini-trampolines.c, mini.h: Add an argument to
12023         mono_create_jit_trampoline_in_domain() for turning off the adding
12024         of the sync wrapper.
12025
12026         * mini.c: Use the JIT trampoline without sync instead of
12027         ldftn_nosync in static RGCTX invoke wrappers so that the call can
12028         be patched.
12029
12030 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12031
12032         * driver.c: Turn on GSHARED optimization by default.
12033
12034 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
12035
12036         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
12037         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
12038
12039         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
12040         create a variant of the generic trampoline code callable from AOTed trampolines.
12041
12042         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
12043         trampoline code callable from AOTed trampolines.
12044
12045         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
12046
12047 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12048
12049         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
12050         pass-through manner.
12051
12052         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
12053         and don't fail sharing for them anymore.
12054
12055         * mini-exceptions.c: Handle exceptions in shared generic methods.
12056
12057         * generic-sharing.c: When checking the context of a generic
12058         method, also check its class's context.  Don't treat wrappers as
12059         sharable.
12060
12061         * mini-trampolines.c: Some code factored out to
12062         metadata/generic-sharing.c.  Handle the MRGCTX case.
12063
12064         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
12065         we must deal with the method being of another instantiation of the
12066         class.  Add static rgctx invoke wrappers to generic methods.
12067
12068 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12069
12070         * mini.c: Provide all jit infos of generic shared methods with a
12071         generic jit info.
12072
12073         * mini-exceptions.c: Handle the new situation that a generic info
12074         might be available, but not info about the this/vtable/mrgctx
12075         variable.
12076
12077 2008-07-03  Mark Probst  <mark.probst@gmail.com>
12078
12079         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
12080         generic methods.
12081
12082 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
12083
12084         * dominators.c (check_dominance_frontier): Fix a warning.
12085
12086         * mini.h: Add some missing prototypes.
12087
12088         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
12089
12090         * driver.c (mono_jit_init_version): Correct the comments since the first
12091         argument should be the name of the root domain, not a filename.
12092
12093         * aot-runtime.c (make_writable): Error out if this is called while running
12094         with --aot-only.
12095         (load_aot_module): Ditto.
12096
12097         * aot-compiler.c: Really fix the computation of method indexes.
12098
12099         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
12100         optimizations as this is no longer called frequently.
12101
12102         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
12103         method and the invoke impl code and pass it to the delegate trampoline instead of
12104         just the delegate class.
12105
12106 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
12107
12108         * aot-compiler.c: Fixup the computation of method indexes.
12109         (add_wrappers): Create the base methods of the runtime invoke wrappers using
12110         the method builder infrastructure.
12111
12112         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
12113         has no header.
12114
12115         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
12116         mode, load the method right away instead of creating a trampoline.
12117
12118         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
12119
12120         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
12121         some checks a bit.
12122
12123 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
12124
12125         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
12126         (mono_aot_load_method): Use method_index instead of method->token.
12127
12128         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
12129         can handle icalls etc. properly.
12130
12131         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12132
12133         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
12134
12135         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
12136         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
12137         JIT_ICALL_ADDR patch type.
12138
12139         * patch-info.h: Add JIT_ICALL_ADDR patch type.
12140
12141         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
12142         request flag.
12143         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
12144
12145         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
12146
12147 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
12148
12149         * mini.c: Use domain->jit_code_hash_lock for controlling access to
12150         domain->jit_code_hash.
12151
12152 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
12153
12154         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
12155
12156 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
12157
12158         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
12159         get_this_arg_from_call, let it compute it when needed.
12160
12161         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
12162         gsctx from code only when needed.
12163
12164         * mini-trampolines.c (get_generic_context): Rename this to 
12165         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
12166         it can be called by the arch backends.
12167
12168         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
12169
12170 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
12171
12172         * driver.c (mono_main): Add experimental --aot-only command line option.
12173
12174         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
12175         set.
12176
12177 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
12178
12179         * driver.c (DllMain): Remove mono_module_handle.
12180
12181         Contributed under MIT/X11 license.
12182
12183 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
12184
12185         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
12186         for emitting methods which are not in the source assembly. Detect and report
12187         failure of assembling+linking.
12188         
12189         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
12190
12191         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
12192
12193 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
12194
12195         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
12196
12197 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
12198
12199         * mini.h: Remove some obsolete prototypes.
12200
12201         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
12202
12203 2008-06-24  Mark Probst  <mark.probst@gmail.com>
12204
12205         * mini.c (get_object_generic_inst): Variable-sized arrays are not
12206         supported by Visual Studio, so use alloca().
12207
12208 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12209
12210         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12211         Fixes #402585.
12212
12213 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12214
12215         * mini.c: Fail sharing of a generic method if it contains an open
12216         catch clause (because we don't pass MRGCTXs yet).
12217
12218 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12219
12220         * mini.c: When compiling a method with generic sharing, insert the
12221         method instantiated with an all-Object generic context into the
12222         jit info table, instead of the context of the first instantiation
12223         of the method we happen to compile.
12224
12225 2008-06-18  Martin Baulig  <martin@ximian.com>
12226
12227         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12228         `major_version' and `minor_version'.
12229
12230 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12231
12232         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12233         mono_method_is_generic_sharable_impl() takes an additional
12234         argument specifying whether to treat type variables as reference
12235         types.
12236
12237 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12238
12239         * mini.h: Removed obsolete prototypes.
12240
12241 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12242
12243         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12244         already handle them.
12245
12246 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12247
12248         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12249         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12250         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12251         tramp-x86.c: Added a MonoGenericContext* argument to
12252         mono_arch_get_unbox_trampoline() so that it can call other
12253         functions which require it.
12254
12255 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12256
12257         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12258         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12259         mono_arch_get_this_arg_from_call() takes a
12260         MonoGenericSharingContext* as well.
12261
12262 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12263
12264         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12265         implement generic sharing of unbox.
12266
12267 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12268
12269         * mini.c: Don't compute the vtable to determine whether a field is
12270         special static, because it might not work for open types.
12271
12272 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12273
12274         * mini.c: Removed the unused token_type and token_source arguments
12275         from get_runtime_generic_context_ptr().
12276
12277 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12278
12279         * mini.c (ADD_BINOP): fix the build
12280
12281 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12282
12283         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12284         a widening op.
12285
12286 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12287
12288         * mini.h: Removed class relations enum that's not used anymore.
12289
12290 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12291
12292         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12293
12294         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12295         the lazy fetch trampoline access code.
12296
12297 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12298
12299         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12300
12301 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12302
12303         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12304
12305         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12306
12307         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12308
12309 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12310
12311         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12312         intrinsics.
12313
12314         * mini-ops.h: Add MIN/MAX_UN opcodes.
12315
12316         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12317         intrinsics.
12318
12319         * basic-math.cs: Add more min/max tests.
12320
12321         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12322
12323 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12324
12325         * mini.c: Small fix in the prologue of emit_castclass.
12326
12327 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12328
12329         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12330
12331         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12332         do not work even for unsigned types. Fixes #400014.
12333
12334         * basic-math.cs: Add regression tests for unsigned Min/Max.
12335
12336 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12337
12338         * mini.c: Added additional context_used argument to several
12339         functions, which will be needed for sharing generic methods.  Use
12340         GET_RGCTX macro wherever appropriate.  Declare only one
12341         context_used in mono_method_to_ir().
12342
12343 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12344
12345         * mini.c, generic-sharing.c: Removed generic class relations.
12346
12347         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12348         functions due to MRGCTX changes.
12349
12350 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12351
12352         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12353         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12354         with calculated IMT.
12355
12356         * mini.c: Generic sharing of calls via generic interfaces.
12357
12358         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12359         generic method with non-constant MonoGenericContext*.  Instead,
12360         the context is taken out of the method itself.
12361
12362 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12363
12364         * mini.c: Generic sharing of ldvirtftn.
12365
12366 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12367
12368         * mini.c: Generic sharing of ldftn.
12369
12370 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12371
12372         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12373
12374 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12375
12376         * mini.c: Generic sharing of the special case of ldtoken followed
12377         by a call to GetTypeFromHandle.
12378
12379 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12380
12381         * mini.c: Generic sharing of box for nullable types.
12382
12383 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12384
12385         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12386         are passed on the stack. Fixes #324807.
12387
12388 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12389
12390         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12391         for the ArgValuetypeAddrInIReg case.
12392
12393         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12394         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12395
12396         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12397         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12398         local variable and pass the local variable by reference to the called method.
12399           
12400         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12401         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12402
12403         Contributed under MIT/X11 license.
12404
12405 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12406
12407         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12408
12409         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12410         everything.
12411
12412 2008-06-10  Martin Baulig  <martin@ximian.com>
12413
12414         * debug-mini.c
12415         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12416
12417 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12418
12419         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12420         possible error when no arguments are passed.
12421
12422         Contributed under MIT/X11 license.
12423
12424 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12425
12426         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12427         where the file name is NULL.
12428
12429 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12430
12431         * mini.c: Fix s390 build.
12432
12433 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12434
12435         * trace.c (mono_trace_parse_options): Fix warnings.
12436
12437         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12438
12439 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12440
12441         * mini.c (remove_block_if_useless): Avoid printing the method name.
12442         
12443         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12444         MONO_INST_NEW.
12445
12446         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12447         LMF. Not yet used.
12448
12449         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12450         translated code after it has been patched.
12451
12452 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12453
12454         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12455         avoid problems during code patching on SMP systems.
12456         (emit_call): Avoid adding a patch info which is already added by 
12457         emit_call_body.
12458         (mono_arch_emit_exceptions): Ditto.
12459
12460 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12461
12462         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12463         MONO_TYPE_ISSTRUCT already checks for it.
12464
12465 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12466
12467         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12468           structs with floats on Winx64 the float registers are not used.  
12469           The integer registers are always used..
12470         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12471           only one register will be used and only if the size of the struct 
12472           is 1,2,4, or 8 bytes.
12473
12474         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12475           to work for Winx64.
12476
12477         Contributed under MIT/X11 license.
12478
12479 2008-06-05  Martin Baulig  <martin@ximian.com>
12480
12481         * debug-debugger.c (debugger_lookup_class): Also call
12482         mono_class_setup_methods() here; we're only called from RTI.
12483
12484 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12485
12486         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12487         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12488         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12489         Post-process object files and add dtrace-generated object, if necessary.
12490
12491         Contributed under MIT/X11 license.
12492
12493 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12494
12495         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12496         element class.
12497
12498         * mini.c: Generic sharing for unbox.any and castclass.
12499
12500 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12501
12502         * mini.c: Ignore tailcall prefix in shared generic code and when
12503         doing calls which require a vtable/rgctx argument.
12504
12505 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12506
12507         * mini.c: Don't free the JIT info.
12508
12509         * driver.c: Changes in the JIT info table testing code.
12510
12511 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12512
12513         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12514         interruption. Fix some warnings.
12515
12516         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12517         interruption_checkpoint.
12518
12519 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12520
12521         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12522         from embedding applications.
12523
12524 2008-06-02  William Holmes  <billholmes54@gmail.com>
12525
12526         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12527           reserving 32 bytes on the stack when making calls. 
12528
12529         Contributed under MIT/X11 license.
12530
12531 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12532
12533         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12534         the linear IL branch.
12535
12536         * driver.c: Print out more information for --version on arm.
12537
12538 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12539
12540         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12541         bb_exit instead, since out of line bblocks might not actually be emitted
12542         out-of-line.
12543         
12544         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12545         maximum epilog size for out of line bblocks if tracing is enabled.
12546
12547         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12548
12549 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12550
12551         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12552
12553 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12554
12555         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12556         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12557         opcodes.
12558
12559 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12560
12561         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12562         the 'value' to store is a constant.
12563
12564         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12565
12566         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12567         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12568
12569 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12570
12571         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12572         for accessing method->generic_container.
12573
12574 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12575
12576         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12577         
12578         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12579
12580         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12581
12582         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12583         fails.
12584
12585 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12586
12587         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12588
12589         * mini.c: Handle the case when mono_class_vtable () fails.
12590
12591 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12592         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12593         the stat profiler.
12594
12595 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12596
12597         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12598         together with domain sharing.
12599
12600 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12601
12602         * mini.c: Treat callvirts to final methods like non-virtual calls
12603         when doing generic sharing, i.e. look them up in the runtime
12604         generic context.
12605
12606 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12607
12608         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12609         with computed types (for generic sharing).
12610
12611         * mini.c: Generic sharing for mkrefany and refanyval.
12612
12613 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12614
12615         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12616         possible.
12617
12618         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12619         the generic sharing code.
12620         
12621         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12622         when needed.
12623
12624 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12625
12626         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12627
12628 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12629
12630         * driver.c: updated copyright date
12631
12632 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12633
12634         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12635         needed.
12636
12637 2008-05-19  Martin Baulig  <martin@ximian.com>
12638
12639         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12640         pointing to the new `_mono_debug_using_mono_debugger' variable.
12641
12642         * driver.c
12643         (mono_main): Check mono_debug_using_mono_debugger() rather than
12644         the `MONO_INSIDE_MDB' environment variable to check whether we're
12645         inside the debugger.
12646
12647 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12648
12649         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12650         argument.
12651
12652 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12653
12654         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12655
12656         * mini.c: Added mini_assembly_can_skip_verification. This
12657         function checks if the assembly requested to skip verification. 
12658         Fixes part of #387274.
12659
12660 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12661
12662         * mini.c (mini_get_method): Disable the check for open generic classes when
12663         using generic sharing.
12664
12665         * generics.cs: Add a test for #387034.
12666
12667         * mini.c (mini_get_method): Check whenever the method class is an open generic
12668         type, and return NULL in that case, causing a verification error. Fixes
12669         #384123.
12670
12671 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12672
12673         * driver.c (mono_main): Revert r102623. The right
12674         thing to do is to enable the verifier under verifiable
12675         unless a --security flag was passed.
12676
12677         We need this non-trivial behavior for --verify-all otherwise
12678         mcs-compileall won't be able to use it. As it needs everything to
12679         be verified under validil.
12680
12681 2008-05-06  Martin Baulig  <martin@ximian.com>
12682
12683         Fix #383749.
12684
12685         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12686         (mono_debugger_thread_cleanup): Likewise.
12687         (mono_debugger_extended_notification): Likewise.
12688
12689 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12690
12691         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12692         against both inflated and non-inflated methods. We need to check against the
12693         generic definition for cases where the instantiated method is not visible.
12694         We need to check against the inflated types for cases where the instantiation
12695         changes any super type. This fixes #382986.
12696
12697         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12698         that check for visibiliy as generic params only appears as the type subject
12699         of tokens on call opcodes. Field manipulation and ldftn must always
12700         target an exact type.
12701
12702 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12703
12704         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12705         if no related --security flag is passed.
12706
12707 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12708
12709         * mini-arch.h: Prepare support for ppc64.
12710
12711         Contributed under MIT/X11 license.
12712
12713 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12714
12715         * aot-runtime.c: Prepare support for ppc64.
12716
12717         Contributed under MIT/X11 license.
12718
12719 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12720
12721         * mini-ops.h: Prepare support for ppc64.
12722
12723         Contributed under MIT/X11 license.
12724
12725 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12726
12727         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12728
12729         Contributed under MIT/X11 license.
12730
12731 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12732
12733         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12734         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12735         assemblies on windows.
12736
12737 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12738
12739         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12740         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12741         * main.c: Use UTF-8 encoded command line instead of Windows default code
12742         page on Windows to support Unicode.
12743         * driver.c (DllMain): New function for mixed-mode assembly support.
12744         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12745         export __stdcall functions without decoration.
12746
12747         Contributed under MIT/X11 license.
12748
12749 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12750
12751         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12752         saving it very early.
12753
12754 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12755
12756         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12757         deleted.  The only way to access the new RGCTX is via the
12758         trampline.
12759
12760         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12761         vtable instead of the RGCTX to static methods.
12762
12763         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12764         accessing the new RGCTX.
12765
12766         * generic-sharing.c: There is no separation between self, type
12767         arguments and other types in the RGCTX anymore.
12768
12769 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12770
12771         * mini-amd64.c (add_general): Remove previous stack adjustment.
12772         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12773         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12774         for 32 bytes of stack space reserved for all calls.
12775         
12776         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12777         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12778         adjustment.
12779         
12780         Code contributed under MIT/X11 license.
12781
12782 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12783
12784         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12785         against the root definition, peeling out method and type instantiations.
12786         Cache verify success results, code that fails verification is still
12787         checked multiple times.
12788
12789 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12790
12791         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12792
12793 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12794
12795         * mini-amd64.c (add_general): Always increment stack on Win64.
12796         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12797         on Win64.
12798         
12799         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12800         stack based argument handling on Win64.
12801         
12802         Code contributed under MIT/X11 license.
12803
12804 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12805
12806         * Makefile.am (version.h): Add support for git-svn.
12807
12808 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12809
12810         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12811         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12812         avoiding allocations and libc functions which might deadlock.
12813         
12814         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12815         'no-gdb-backtrace' option is set.
12816
12817         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12818
12819         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12820
12821 2008-04-21  Martin Baulig  <martin@ximian.com>
12822
12823         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12824         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12825
12826 2008-04-21  Martin Baulig  <martin@ximian.com>
12827
12828         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12829         `thread_vtable', `event_handler_ptr' and `event_handler'.
12830
12831 2008-04-21  Martin Baulig  <martin@ximian.com>
12832
12833         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12834         allows delayed initialization of the `executable_code_buffer' when
12835         attaching.
12836
12837 2008-04-21  Martin Baulig  <martin@ximian.com>
12838
12839         * mini.h (mono_debugger_create_notification_function): Removed.
12840         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12841
12842         * mdb-debug-info64.s
12843         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12844
12845         * mdb-debug-info32.s
12846         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12847
12848         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12849         currently only works on x86 and x86_64, so don't create it on ppc.
12850
12851 2008-04-21  Martin Baulig  <martin@ximian.com>
12852
12853         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12854
12855         * mini.c
12856         (mini_method_compile): In the fp elimination check, check
12857         `debug_options.mdb_optimizations' in addition to
12858         mono_debug_using_mono_debugger().       
12859
12860         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12861         disable some JIT optimizations which are only disabled when
12862         running inside the debugger.
12863         Added `--help-debug' option to describe the debugging options.
12864         (parse_debug_options): New static function to parse the `--debug'
12865         options, so we can easily add more stuff in future.
12866
12867 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12868
12869         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12870         the method has no body.
12871
12872 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12873
12874         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12875         assembly is not allowed in MSVC 64-bit compiler. 
12876         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12877         as we get floating point exceptions everywhere.
12878         
12879         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12880         correctly align arguments for call to throw_exception.
12881         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12882         
12883         Code contributed under MIT/X11 license.
12884
12885 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12886
12887         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12888
12889 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12890
12891         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12892
12893         * mini-amd64.c (NEW_INS): Set cil_code.
12894
12895         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12896         from mini-amd64.c so all debugger related logic is in one place.
12897
12898         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12899         later won't have a random ip assigned to them.
12900
12901 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12902
12903         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12904         the arch specific function initializes code_size.
12905         (mono_create_delegate_trampoline): Ditto.
12906
12907         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12908         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12909         platforms.
12910
12911         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12912         running under the debugger.
12913
12914         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12915         debugger.
12916
12917         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12918         debugger. Also move the disabling of optimizations here from driver.c.
12919         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12920         debugger.
12921
12922         * mini.h (MonoCompile): Add a few new flags.
12923
12924 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12925
12926         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12927         so the cil_code field of created MonoInst's is properly set.
12928         (mini_select_instructions): Ditto.
12929
12930         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12931         (MONO_INST_NEW_CALL): Ditto.
12932
12933         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12934         in many places so the ins->cil_code field is properly initialized.
12935
12936         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12937         place.
12938
12939 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12940
12941         * mini.c (mini_method_compile): Print a different message when compiling a 
12942         shared method.
12943         
12944         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12945         > 1.
12946
12947 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12948
12949         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12950         SSE2 instructions.
12951
12952         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12953         
12954 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12955
12956         * mini.c (handle_stack_args): Make this return void since its return value was
12957         never used. Also set cfg->unverifiable for invalid IL instead of calling
12958         G_BREAKPOINT ().
12959
12960 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12961
12962         * mini.c: Make sure "this" is live in catch clauses with type
12963         variables in shared generic code.
12964
12965 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12966
12967         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12968         generic_class_is_reference_type() to ensure the proper behaviour
12969         when sharing generic code and the type in question is a type
12970         argument.
12971
12972 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12973
12974         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12975         race conditions when printing thread dumps. Fixes #377738.
12976
12977 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12978         
12979         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12980         shows up when both MonoInst arguments can cause aliasig.
12981         There is likely no way in the current JIT to trigger this problem, but
12982         it showed up in the development of generics sharing, when in a new
12983         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12984         When the generics sharing code will be committed, its tests will be
12985         valid also for this bug.
12986
12987 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12988
12989         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12990         PATCH_INFO_METHOD.
12991
12992         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12993         NULL.
12994
12995 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12996
12997         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12998         use a more detailed exception message for InvalidCastException.
12999
13000         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
13001
13002         * driver.c (mono_main): Add --debug=casts option to turn on better 
13003         InvalidCastException message details.
13004
13005         * mini.c (mini_get_debug_options): New helper function to return the address of
13006         the debug_options variable.
13007
13008         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
13009         the jit_tls TLS variable.
13010
13011         * mini.c (mono_jit_tls): New TLS variable.
13012
13013         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
13014         option is used.
13015
13016 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
13017
13018         * mini.h: Removed verifer related stuff. This code was moved to verify.c
13019
13020         * mini.c: Removed verifer related stuff, code moved to verify.c.
13021
13022         * driver.c: Using code from verify.c instead of mini.c.
13023
13024 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
13025
13026         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
13027         longer valid.
13028
13029 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
13030
13031         * mini.c (check_for_method_verify): Enabling verification of
13032         corlib if mono_verify_all is set. Bugs in the verifier preventing that
13033         have been fixed.
13034
13035 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
13036
13037         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
13038         caller saved registers as well.
13039         
13040         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
13041         saved registers as well.
13042
13043 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
13044
13045         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
13046
13047         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
13048         code.
13049
13050 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
13051
13052         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
13053         to get_call_info.
13054         (get_call_info): Take a gsctx argument instead of 'cfg'.
13055
13056 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
13057
13058         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
13059         mono_verify_all is set.
13060
13061         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
13062
13063         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
13064
13065 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
13066
13067         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
13068         an exception.
13069
13070         * driver.c mini.c mini.h: Add a --verify-all development option to test the
13071         verifier and the code generated by the compiler.
13072
13073 2008-03-25  Mark Probst  <mark.probst@gmail.com>
13074
13075         * mini.c: Generic sharing of the non-nullable case of the box
13076         instruction.
13077
13078 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
13079
13080         * inssel.brg: Fix the build.
13081
13082         * iltests.il.in: Add a test for lconv.ovf.u8.un.
13083
13084 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
13085
13086         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
13087         Array:Address. Fixes #372410.
13088
13089         * iltests.il.in: New tests for readonly prefix.
13090
13091 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
13092
13093         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
13094         mini-trampolines.c.
13095
13096         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
13097         mini-exceptions.c.
13098
13099         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
13100         
13101         * mini.c (mono_decompose_op_imm): New helper function.
13102
13103         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
13104         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13105         return value.
13106
13107         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13108         mono_arch_output_basic_block. Fix warnings.
13109
13110         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
13111         for now.
13112
13113 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
13114
13115         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
13116         since the extra frame is now detected automatically inside the loop.
13117
13118         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
13119         opts which are now in mono_peephole_ins ().
13120         
13121         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
13122
13123         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
13124         frames and skip duplicate managed-to-native frames. Fixes #367665.
13125
13126         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13127         opts which are now in mono_peephole_ins ().
13128         (mono_arch_peephole_pass_2): Ditto.
13129
13130         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
13131
13132         * mini-codegen.c (mono_peephole_ins): New helper function containing the
13133         arch independent peephole optimizations.
13134
13135         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13136         opts which are now in mono_peephole_ins ().
13137
13138         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
13139         
13140         * mini-s390.c (mono_arch_output_basic_block): Fix build.
13141
13142         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
13143         pattern.
13144
13145         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
13146         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
13147         opcode. 
13148
13149 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
13150
13151         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
13152         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13153         return value.
13154
13155         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13156         mono_arch_output_basic_block. Fix warnings.
13157
13158 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13159
13160         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13161         conv.ovf.u.un.
13162
13163 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13164
13165         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13166         conv.ovf.u.un.
13167
13168         * iltests.il: Add new tests.
13169
13170 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
13171
13172         * mini.c: Removed Windows version macros.
13173
13174 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13175
13176         * generic-sharing.c: Put reflection types in the extensible part
13177         of the runtime generic context.
13178
13179         * mini.c: Generic sharing of the GetTypeHandle special case of the
13180         ldtoken instruction.
13181
13182 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13183
13184         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
13185
13186         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
13187         
13188         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
13189         consistency with the other version on the linear IR branch.
13190
13191         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
13192
13193         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
13194
13195         * iltests.il.in: Add new tests.
13196
13197 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
13198
13199         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
13200
13201         * iltests.il.in: Add new tests.
13202
13203 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13204
13205         * mini.c: Two variables with the same name were declared in
13206         nesting contexts and one wasn't initialized.  Fixed.
13207
13208 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13209
13210         * mini.c: Generic sharing of the initobj instruction.
13211
13212 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13213
13214         * mini.c: make the test to optimize ldtoken from typeof() more
13215         precise.
13216
13217 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13218
13219         * mini.c: Generic sharing of the initobj instruction for reference
13220         types.
13221
13222 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13223
13224         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13225         the mono_breakpoint_clean_code() code to perform bound checks.
13226
13227 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13228
13229         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13230         mono_arch_patch_callsite() to include the start of the managed method
13231         to be able to perform bound checks.
13232
13233 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13234
13235         * mini.c: Generic sharing for the isinst instruction.
13236
13237 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13238
13239         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13240         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13241         with the runtime generic context argument.
13242
13243         * mini.c: Share calls to several types of unsharable methods by
13244         putting the address of the method code in the runtime generic
13245         context and doing an indirect call.
13246
13247         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13248         to switches.
13249
13250 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13251
13252         * generic-sharing.c: Change due to a change in the runtime genric
13253         context API.
13254
13255 2008-03-15  Martin Baulig  <martin@ximian.com>
13256
13257         * tramp-x86.c
13258         (mono_arch_nullify_class_init_trampoline): Add call to
13259         mono_breakpoint_clean_code() to make things work when running
13260         inside the debugger.
13261
13262         * tramp-amd64.c
13263         (mono_arch_nullify_class_init_trampoline): Add call to
13264         mono_breakpoint_clean_code() to make things work when running
13265         inside the debugger.
13266
13267 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13268
13269         * inssel-long.brg (reg): Fix 64 bit build.
13270
13271 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13272
13273         * mini.c, mini.h: Share static generic code by passing it an
13274         implicit argument pointing to the runtime generic context.
13275
13276         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13277         inssel-long32-mips.brg: New opcodes for calling shared static,
13278         which need to be passed the runtime generic context.
13279
13280         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13281         argument on the stack in the prologue if needed.  New function for
13282         finding the runtime generic context argument from the registers
13283         saved by the trampoline.
13284
13285         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13286         runtime generic context argument.
13287
13288         * tramp-amd64.c: Also restore the register used for the runtime
13289         generic context argument.
13290
13291         * mini-trampoline.c: Resolve shared static calls by consulting the
13292         runtime generic context via the new argument.
13293
13294         * generic-sharing.c: Add an argument to sharability-checking
13295         functions that specifies whether type variables should be treated
13296         as sharable type arguments.
13297
13298         * inssel-x86.brg: Removed a superfluous, buggy rule.
13299
13300         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13301         to switches.
13302
13303 2008-03-14  Martin Baulig  <martin@ximian.com>
13304
13305         * debug-debugger.c (main_thread_handler): Call
13306         mono_runtime_run_main() without sending any notifications.
13307
13308         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13309
13310 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13311
13312         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13313
13314 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13315
13316         * tramp-x86.c: Fixed register restore offsets in the trampoline
13317         code for ECX and EDX.
13318
13319 2008-03-12  Geoff Norton  <gnorton@novell.com>
13320
13321         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13322         different ucontext_t implementations.
13323         * exceptions-arm.c: Use the above defines to get exceptions working on 
13324         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13325         * mini-arm.c: Implement iPhone icache support (based on a patch by
13326         Luke Howard lukeh@padl.com)
13327
13328 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13329
13330         * mini.c: Enable generic sharing of calls to non-static
13331         non-interface non-generic non-value-type methods.
13332
13333         * mini-trampolines.c: Resolve calls from shared generic code.
13334
13335 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13336
13337         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13338
13339         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13340
13341 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13342
13343         * mini.c: some fixes for the AOT compiler.
13344
13345 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13346
13347         * cpu-amd64.md: Add clob:1 to some float opcodes.
13348
13349 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13350
13351         * mini.h: Added MiniVerifierMode enumeration.
13352
13353         * mini.c: Added mini_verifier_set_mode to control
13354         the usage of the new verifier.
13355
13356         * mini.c (mono_method): Integrated the new verifier.
13357
13358         * driver.c: Extended --security option with validil and
13359         verifiable options to activate the new verifier.
13360
13361 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13362
13363         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13364         optimization to ctors taking 0 or 2 arguments too.
13365
13366         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13367         a bit.
13368
13369         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13370
13371         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13372
13373 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13374
13375         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13376         non-aot case as well.
13377
13378         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13379
13380         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13381         changes.
13382
13383         * aot-compiler.c (encode_patch): Ditto.
13384
13385         * mini.h (G_MININT32): Fix the definition of this.
13386
13387 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13388
13389         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13390
13391         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13392
13393 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13394
13395         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13396         methods returning vtypes in registers.
13397         (mono_arch_allocate_vars): Ditto.
13398
13399         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13400
13401         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13402
13403         * generics.cs: Add a test from the linear IR branch.
13404
13405         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13406
13407         * mini.c (inline_method): Cache failed inline attempts.
13408
13409 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13410
13411         * mini.c: For shared methods of generic classes put the location
13412         of "this" into the MonoGenericJitInfo.
13413
13414         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13415         register out of a MonoContext by register number.  Add the generic
13416         sharing context as an argument to mono_arch_find_this_argument().
13417
13418         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13419         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13420         for new arch function.
13421
13422         * mini-exception.c: Handle open exception clauses in shared
13423         generic code.
13424
13425         * mini-trampolines.c: Supply additional argument to
13426         mono_arch_find_this_argument().
13427
13428 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13429
13430         * Makefile.am (regtests): Run the bench.exe tests last.
13431
13432 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13433
13434         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13435         a bit.
13436
13437 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13438
13439         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13440         with MS.
13441
13442         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13443         
13444         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13445
13446         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13447         whose class has no cctor.
13448
13449         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13450
13451 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13452
13453         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13454         unverified.
13455
13456 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13457
13458         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13459         to be in sync with the code on the linear IR branch.
13460
13461         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13462
13463         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13464
13465 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13466
13467         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13468
13469         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13470
13471         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13472
13473         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13474
13475         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13476         
13477         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13478         body.
13479
13480 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13481
13482         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13483         OP_LOADR4_MEMBASE emission.
13484
13485         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13486         (mono_spillvar_offset_float): Ditto.
13487
13488         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13489
13490         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13491         emission.
13492
13493         * basic-long.cs: Add regression tests for them.
13494
13495         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13496         use.
13497         (mono_arch_allocate_vars): Fix representation of single-precision float
13498         argument.
13499         (mono_arch_output_basic_block): Ditto.
13500
13501         * inssel-mips.brg: Ditto, remove duplicate items.
13502
13503         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13504         arguments of tail calls as on other platforms.
13505         (mono_arch_output_basic_block): Handle tail calls.
13506
13507         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13508         register.
13509
13510         * objects.cs (test_5_pass_static_struct): Add test for it.
13511
13512         Contributed under MIT/X11 license.
13513
13514 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13515
13516         * Makefile.am: Use gmcs for compiling the regression tests.
13517
13518         * *.2.cs *.2.il: Rename to *.cs and *.il.
13519
13520 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13521
13522         * regalloc.h: Make the vassign array smaller.
13523
13524         * mini.c (mini_method_compile): Remove an unused field in cfg.
13525
13526         * mini-codegen.c: Add a bunch of micro optimizations.
13527
13528 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13529
13530         * regalloc.h: Remove some unused fields.
13531
13532 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13533
13534         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13535
13536         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13537
13538 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13539
13540         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13541
13542         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13543         trampoline: Fetch an entry from the runtime generic context.  If
13544         it's NULL, jump to the actual trampoline to fill the runtime
13545         generic context.  Otherwise, return it.
13546
13547         * mini.c: Call the lazy fetch trampoline to get entries out of the
13548         runtime generic context.
13549
13550         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13551         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13552         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13553
13554 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13555
13556         * mini.c: Fetch data out of the extensible part of the runtime
13557         generic context instead of calling a helper function.
13558
13559         * generic-sharing.c: Some functions moved into
13560         metadata/generic-sharing.c.  Helper function for fetching other
13561         types now checks and asserts against extensible rgctx (just for
13562         debugging purposes - the helper function isn't called anymore
13563         unless for debugging).
13564
13565 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13566
13567         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13568         for tail calls up to the point that the tests in iltests.exe run. Also add a
13569         dummy CKFINITE implementation.
13570         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13571         needed for trampoline LMF frames.
13572
13573         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13574         trampoline LMF frames.
13575
13576 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13577
13578         * mini.c (inline_method): clean any pending loader error when inlining fail.
13579         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13580
13581 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13582
13583         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13584
13585         * aot-runtime.c (decode_patch_info): Ditto.
13586
13587         * mini.c (mono_resolve_patch_target): Ditto.
13588         
13589         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13590         icall wrappers.
13591
13592         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13593         
13594         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13595         if it references an icall address.
13596
13597 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13598
13599         * cpu-s390x.md: Remove some more unused opcodes.
13600         
13601         * cpu-s390x.md: Remove some unused opcodes.
13602
13603         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13604         mono_op_imm_to_op ().
13605
13606         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13607         instead of a switch statement.
13608         
13609         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13610         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13611
13612         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13613         
13614         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13615
13616         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13617         -1.
13618
13619 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13620
13621         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13622         opened. Fixes #362607.
13623
13624         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13625
13626         * iltests.il.in: Add a test for static methods in interfaces.
13627
13628 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13629
13630         * genmdesc.c (build_table): Fix a crash on older glib versions.
13631
13632         * cpu-sparc.md: Remove some unused opcodes.
13633         
13634         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13635         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13636
13637         * cpu-amd64.md: Remove some unused opcodes.
13638
13639         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13640         like the other opcodes.
13641
13642 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13643
13644         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13645
13646         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13647
13648         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13649         variables 'cfg' instead of 'm' for consistency.
13650
13651         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13652
13653         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13654         argument holding the vtype return address, to avoid the ambigious use of
13655         cfg->ret for this purpose.
13656
13657         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13658
13659         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13660         
13661         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13662         new mono_print_ins () function which only takes one argument.
13663
13664 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13665
13666         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13667         macro arguments.
13668
13669 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13670
13671         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13672
13673         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13674
13675         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13676         opcodes and other small changes.
13677
13678         * mini-ops.h: Add some new opcodes from the linear IR branch.
13679
13680         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13681
13682         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13683         opcodes, use the REG_MEMBASE opcodes instead.
13684         
13685         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13686         opcodes, use the REG_MEMBASE opcodes instead.
13687         
13688         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13689         linear IR branch.
13690
13691         * mini.c (mono_op_imm_to_op): New helper function.
13692
13693         * mini-ops.h: Add some opcodes from linear IR branch.
13694
13695 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13696
13697         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13698         <tsv@solvo.ru>.
13699
13700 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13701
13702         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13703         OP_ICONV_TO_R4/R8.
13704
13705         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13706
13707 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13708
13709         * aot-compiler.c (emit_method_code): Add an assert.
13710
13711         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13712         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13713         methods.
13714
13715 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13716
13717         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13718         some load/store opcodes so they are consistent. 
13719         (mono_arch_emit_prolog): Simplify some code.
13720
13721         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13722
13723         * objects.cs: Add tests for large argument offsets on ARM.
13724
13725         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13726         stack offsets. Fixes #359651.
13727
13728         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13729
13730         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13731
13732         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13733
13734         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13735
13736         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13737
13738         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13739         rid of CEE_CONV_R_UN.
13740
13741         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13742
13743 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13744
13745         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13746
13747         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13748
13749         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13750
13751         * cpu-amd64.md: Remove some unused opcodes.
13752
13753         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13754
13755         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13756
13757         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13758         arch specific functions for its parts. Call the peephole pass after local
13759         regalloc so the prolog can compute a more accurate max_offset.
13760         
13761         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13762         the corresponding OP_I/OP_L opcodes.
13763
13764         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13765
13766         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13767
13768 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13769
13770         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13771         as they are handled in mini.c.
13772
13773         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13774         
13775         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13776         case since it is handled in mini.c.
13777
13778         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13779
13780         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13781
13782         * *.c: Use the new opcodes in the IR and back end code.
13783
13784         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13785
13786         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13787
13788 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13789
13790         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13791         an assert because it has a race condition.
13792
13793 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13794
13795         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13796
13797         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13798
13799         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13800
13801         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13802         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13803
13804 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13805
13806         * cpu-amd64.md (move): Correct the maximum size of move.
13807
13808 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13809
13810         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13811         the generic class init trampoline to return quickly if the class
13812         is already inited.
13813
13814 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13815
13816         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13817         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13818
13819 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13820
13821         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13822         branch.
13823
13824 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13825
13826         * objects.cs: Add some soft-float tests.
13827
13828         * mini.c: Fix a couple more soft-float issues.
13829
13830         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13831
13832         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13833         avoid a REX prefix.
13834
13835 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13836
13837         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13838         exception happens while compiling a virtual method.
13839
13840 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13841
13842         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13843         
13844         * mini-sparc.c: Fix build.
13845
13846         * mini-sparc.c (get_call_info): Add support for generic sharing.
13847
13848         * mini-exceptions.c: Add a FIXME.
13849
13850 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13851
13852         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13853         altstack handling code.
13854
13855         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13856         
13857         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13858
13859         * mini-s390.c: Add support for generic sharing.
13860
13861         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13862         Fix CAS on s390.
13863         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13864
13865         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13866
13867         * mini-s390x.c: Add support for generic sharing.
13868         
13869         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13870         Fix CAS on ia64.
13871         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13872
13873         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13874         can be used since it takes a 16 bit signed immediate.
13875
13876         * inssel-s390x.brg: Fix OP_SETRET.
13877
13878         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13879
13880         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13881
13882         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13883
13884         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13885
13886         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13887         in one place.
13888
13889         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13890         stuff.
13891
13892         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13893         of the unused mono_arch_patch_delegate_trampoline stuff.
13894
13895 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13896
13897         * basic-long.cs: Move the fp related tests to basic-float.cs.
13898
13899         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13900
13901         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13902
13903         * basic-calls.cs: Add a test for proper float argument passing.
13904
13905         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13906         if the context corresponds to an exception received through a signal.
13907
13908         * exceptions.cs: Add a test for nullref handling at the start of a try
13909         clause.
13910
13911         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13912
13913         * jit-icalls.c (mono_break): New JIT icall.
13914
13915         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13916
13917         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13918
13919 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13920
13921         * cpu-*.md: Get rid of unused opcodes.
13922
13923         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13924
13925         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13926         by all platforms.
13927
13928         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13929         define.
13930
13931         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13932         the arch independent trampoline code in mini-trampolines.c.
13933
13934         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13935
13936         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13937
13938         * mini-s390.h: Remove an unused define.
13939         
13940         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13941         the arch independent trampoline code in mini-trampolines.c.
13942
13943         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13944
13945 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13946
13947         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13948
13949         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13950
13951         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13952
13953         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13954
13955         * cpu-amd64.md: Use smaller sizes for int opcodes.
13956
13957         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13958
13959         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13960         objects.cs.
13961
13962         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13963         debugging.
13964
13965         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13966         instead of though a pointer to save an indirection when accessing elements of
13967         the array.
13968
13969         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13970         some typos.
13971         (NOT_IMPLEMENTED): New helper macro.
13972         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13973         of a bb.
13974
13975         * *.c: Use the new helper macro.
13976
13977 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13978
13979         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13980
13981 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13982
13983         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13984         stack slots.
13985
13986 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13987
13988         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13989         profiling is enabled.
13990         
13991         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13992         the end.
13993         (mono_arch_emit_prolog): Add more first bblock optimizations.
13994
13995         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13996         in order if possible.
13997         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13998         bblock, since the arguments are still in their original registers.
13999
14000         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
14001
14002 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
14003
14004         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
14005         as well.
14006
14007         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
14008         offset 0.
14009
14010         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
14011
14012         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
14013         process async exceptions received while in unmanaged code.
14014
14015         * mini.c (mini_init): Install a callback with the runtime which will be called
14016         when a thread receives an async exception while in unmanaged code.
14017
14018         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
14019
14020         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
14021
14022 2008-01-16  Wade Berrier  <wberrier@novell.com>
14023
14024         * cpu-g4.md:
14025         * cpu-arm.md:
14026         * cpu-s390x.md:
14027         fix build
14028
14029 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
14030
14031         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
14032         compilation with sun cc.
14033
14034         * cpu-*.md: Fix the build.
14035
14036         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
14037
14038         * mini-amd64.h: Add some comments to the MonoLMF structure.
14039
14040         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
14041         
14042         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
14043         in the LMF structure if possible. This saves two instructions in the
14044         managed->native wrappers.
14045
14046         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
14047
14048 2008-01-16  Mark Probst  <mark.probst@gmail.com>
14049
14050         * generic-sharing.c: New type argument lookup code which uses the
14051         runtime generic context template.
14052
14053 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
14054
14055         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
14056
14057         * mini-arm.c (add_general): Fix arm eabi parameter passing.
14058         (mono_arch_output_basic_block): Fix localloc implementation.
14059
14060         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
14061
14062         * mini-ia64.c (peephole_pass): Fix ia64 build.
14063
14064         * mini-amd64.c (peephole_pass): Fix a warning.
14065         
14066         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
14067         at a constant offset from sp/fp.
14068
14069         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
14070         instead of obtaining it from *lmf in the managed method case.
14071
14072 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
14073
14074         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
14075
14076 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
14077
14078         * mini.h (MonoInstList): New type.
14079         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
14080         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
14081         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
14082         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
14083         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
14084         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
14085         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
14086         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
14087         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
14088         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
14089         MONO_INST_LIST_FOR_EACH_ENTRY,
14090         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
14091         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
14092         mono_inst_list_first, mono_inst_list_last,
14093         mono_inst_list_next, mono_inst_list_prev): New instruction
14094         list handling interfaces.
14095         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
14096         list head 'ins_list'.
14097         (MonoInst): Replace next pointer with list head 'node'.
14098         (MonoCallInst): Make 'out_args' a MonoInstList.
14099         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
14100         (MonoCompile): Delete reverse_inst_list and
14101         reverse_inst_list_len.
14102         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
14103         mono_arch_lowering_pass, mono_arch_local_regalloc,
14104         mono_arch_output_basic_block, mono_arch_emit_prolog):
14105         Convert to new instruction lists.
14106         (insert_after_ins): Delete.
14107         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
14108         instruction lists.
14109         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
14110         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
14111         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
14112         mono_emulate_opcode, mono_emit_load_got_addr,
14113         inline_method, mono_method_to_ir, mono_print_bb_code,
14114         print_dfn, decompose_pass, nullify_basic_block,
14115         replace_out_block_in_code, remove_block_if_useless,
14116         merge_basic_blocks, move_basic_block_to_end,
14117         try_unsigned_compare, optimize_branches, mono_print_code,
14118         mini_select_instructions, remove_critical_edges): Likewise.
14119         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
14120         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
14121         mono_arch_output_basic_block, mono_arch_emit_prolog):
14122         Likewise.
14123         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
14124         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14125         mono_arch_output_basic_block): Likewise.
14126         (inst_list_prepend, insert_after_ins): Delete.
14127         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
14128         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
14129         instruction lists.
14130         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
14131         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
14132         mono_arch_emit_prolog): Likewise.
14133         * cfold.c (mono_constant_fold): Likewise.
14134         * liveness.c (visit_bb, mono_analyze_liveness,
14135         optimize_initlocals): Likewise.
14136         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
14137         * graph.c (mono_draw_code_cfg): Likewise.
14138         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
14139         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
14140         mono_ssa_cprop): Likewise.
14141         * abcremoval (get_relations_from_previous_bb, process_block):
14142         Likewise.
14143         * local-propagation (mono_cprop_invalidate_values,
14144         mono_local_cprop_bb): Likewise.
14145         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
14146         peephole_pass, mono_arch_output_basic_block,
14147         mono_arch_emit_prolog): Likewise.
14148         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
14149         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14150         mono_arch_emit_prolog): Likewise.
14151         (insert_after_ins): Delete.
14152         * aliasing.c (print_code_with_aliasing_information,
14153         mono_build_aliasing_information, mono_aliasing_deadce):
14154         Convert to new instruction lists.
14155         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
14156         peephole_pass, NEW_INS, mono_arch_lowering_pass,
14157         mono_arch_local_regalloc, mono_arch_output_basic_block):
14158         Likewise.
14159         (insert_after_ins): Delete.
14160         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
14161         peephole_pass, mono_arch_output_basic_block): Convert to
14162         new instruction lists.
14163         * mini-codegen (InstList, inst_list_prepend,
14164         insert_after_ins): Delete.
14165         (insert_before_ins, get_register_force_spilling,
14166         get_register_spilling, free_up_ireg, free_up_reg,
14167         create_copy_ins, create_spilled_store, alloc_int_reg,
14168         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
14169         to new instruction lists.
14170         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
14171         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14172         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
14173         (insert_after_ins): Delete.
14174         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
14175         mono_arch_local_regalloc, mono_arch_output_basic_block,
14176         mono_arch_call_opcode): Convert to new instruction lists.
14177         (insert_after_ins): Delete.
14178         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
14179         peephole_pass, mono_arch_output_basic_block,
14180         mono_arch_emit_prolog): Convert to new instruction lists.
14181
14182 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
14183
14184         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
14185
14186         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
14187         Fixes #353182.
14188
14189         * Makefile.am (version.h): Make this work with non-bash shells.
14190
14191 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
14192
14193         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
14194
14195 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14196
14197         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
14198         the InitializeArray optimization.
14199
14200 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14201
14202         * mini.c driver.c: Don't include os/gc_wrapper.h.
14203
14204 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14205
14206         * mini.c (print_jit_stats): Print GC statistics if available.
14207
14208 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14209
14210         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14211
14212 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14213
14214         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14215
14216 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14217
14218         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14219         
14220         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14221
14222         * driver.c (mono_main): Ditto.
14223
14224 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14225
14226         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14227
14228         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14229         in the vtable can't be encoded.
14230         (compile_method): Ditto.
14231
14232 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14233
14234         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14235         defined.
14236
14237         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14238         lmf->rbp.
14239
14240         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14241         the top LMF entry belongs to the current method.
14242
14243         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14244
14245 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14246
14247         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14248         
14249         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14250
14251         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14252
14253         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14254
14255         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14256
14257         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14258         implementation.
14259
14260         * basic-float.cs: Add an ulong->double cast test.
14261
14262 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14263
14264         * mini.c (mono_method_to_ir): Fix a warning.
14265
14266 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14267
14268         * mini-ops.h: Add OP_SWITCH.
14269
14270         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14271         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14272
14273 2007-12-11  Geoff Norton  <gnorton@novell.com>
14274
14275         * mini-s390x.c: Minor change to the MAX() define to allow
14276         it to compile with other gcc versions.
14277
14278 2007-12-11  Geoff Norton  <gnorton@novell.com>
14279
14280         * cpu-s390x.md:
14281         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14282
14283 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14284
14285         exceptions-arm.c (mono_arch_get_restore_context): Restore
14286         the frame pointer.
14287
14288         exceptions-arm.c (throw_exception): Save the frame pointer.
14289         This is a partial fix for #323747. Only the client side is
14290         fixed.
14291
14292 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14293
14294         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14295         was using an unrelated variable to log the class which
14296         needed the cctor to be called. This was crashing on arm.
14297
14298 2007-12-09  Robert Jordan  <robertj@gmx.net>
14299
14300         * mini-x86.c (mono_arch_emit_epilog):
14301         Consider all kinds of 64-bit types. Fixes #323114.
14302
14303 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14304
14305         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14306
14307 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14308
14309         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14310
14311 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14312
14313         * mini.c: run type ctor before allocating an object, not only
14314         when running it's constructor method (fixes at least part of bug #342507).
14315
14316 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14317         
14318         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14319         
14320         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14321         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14322         function.
14323
14324         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14325         mono_generic_class_init_trampoline () the same as it is done with the other
14326         trampolines.
14327
14328         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14329         aot-runtime.c aot-compiler.c: Implement AOT support.    
14330
14331 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14332
14333         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14334         build for archs which don't have the vtable trampoline defined
14335         yet.
14336
14337 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14338
14339         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14340
14341         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14342
14343         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14344
14345         * tramp-<ARCH>.c: Use the new helper function.
14346
14347 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14348
14349         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14350         trampoline call, which takes a vtable argument.
14351
14352         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14353         OP_TRAMPCALL_VTABLEs like other calls.
14354
14355         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14356         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14357         call.  Implemented a support function which fetches the vtable
14358         from a register set.
14359
14360         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14361         Implemented a generic class init trampoline, using the
14362         OP_TRAMPCALL_VTABLE opcode.
14363
14364         * mini.c: Implemented static field access when sharing generic
14365         code.  This implies initing the class using the new
14366         OP_TRAMPCALL_VTABLE call.
14367
14368 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14369
14370         * mini.c: Don't compile methods with sharing enabled if their
14371         classes are disabled for sharing.
14372
14373 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14374
14375         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14376         opcodes. Fixes #346563.
14377
14378         * objects.cs: Add a new test.
14379
14380         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14381
14382         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14383         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14384
14385 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14386
14387         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14388
14389 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14390
14391         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14392         code stream.
14393
14394 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14395
14396         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14397
14398         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14399         optimization in the AOT case.
14400         
14401 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14402
14403         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14404         
14405         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14406
14407         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14408
14409         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14410
14411         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14412         is created by the inlined delegate ctor.
14413
14414         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14415
14416         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14417
14418 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14419
14420         * cpu-x86.md: Fix the length of ckfinite.
14421
14422 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14423
14424         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14425         
14426         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14427         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14428
14429         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14430
14431         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14432         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14433
14434 2007-11-28  Martin Baulig  <martin@ximian.com>
14435
14436         * mini-x86.c
14437         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14438         after creating the trampoline.
14439
14440 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14441
14442         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14443
14444         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14445         the same version.
14446
14447         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14448         instead of the calling method to help AOT.
14449
14450         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14451
14452 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14453
14454         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14455         is defined.
14456
14457 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14458
14459         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14460         
14461         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14462         (encode_method_ref): No need to handle generic method definitions specially.
14463
14464         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14465
14466         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14467         decode_klass_info.
14468
14469         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14470         encode_klass_info.
14471         (compile_method): Enable generic sharing.
14472
14473 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14474
14475         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14476         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14477
14478         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14479         generic code.
14480
14481         * mini-trampolines.c: Fix a warning.
14482
14483         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14484         NEW_PCONST.
14485         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14486         (generic_class_is_reference_type): Remove unused function.
14487
14488         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14489         in the generic vtable trampoline case.
14490
14491         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14492         
14493         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14494         return an AOT method based on a vtable slot.
14495
14496         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14497
14498         * mini.c (mini_get_vtable_trampoline): Export this.
14499
14500 2007-11-22  Martin Baulig  <martin@ximian.com>
14501
14502         * debug-debugger.h
14503         (MonoDebuggerInfo): Move `debugger_version' up.
14504
14505 2007-11-22  Martin Baulig  <martin@ximian.com>
14506
14507         * mini-amd64.c
14508         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14509
14510         * mini-trampolines.c
14511         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14512         after compiling the method.
14513
14514 2007-11-20  Martin Baulig  <martin@ximian.com>
14515
14516         * debug-mini.c
14517         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14518         (mono_debugger_remove_breakpoint): Likewise.
14519         (mono_debugger_check_breakpoints): Likewise.
14520
14521         * debug-debugger.c: Implement the new breakpoint interface here.
14522
14523 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14524
14525         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14526         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14527
14528         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14529
14530 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14531
14532         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14533
14534         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14535         mini.c.
14536
14537         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14538         mini.c.
14539
14540         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14541         returning a vtype in a register.
14542
14543         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14544         here from the arch specific code.
14545
14546         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14547         mini.c.
14548
14549         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14550         (mono_arch_emit_prolog): Increment maximum prolog size.
14551
14552         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14553         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14554
14555         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14556         MonoGenericSharingContext.
14557
14558         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14559         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14560
14561 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14562
14563         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14564         which extract fields out of the runtime generic context.  Full
14565         sharing of the NEWARR opcode.
14566
14567 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14568
14569         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14570         --enable-minimal=ssa.
14571
14572 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14573
14574         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14575         mono_marshal_get_delegate_invoke () signature change.
14576
14577 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14578
14579         * mini.c: Removed the shared context in favor of the generic
14580         sharing context.  Allocate the MonoJitInfo structure with room for
14581         the generic sharing context if it's needed.
14582
14583         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14584         domain-internals.h now.
14585
14586         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14587
14588         * generic-sharing.c: Several changes for working without a shared
14589         context and instead operating on open types instead.
14590
14591 2007-11-12  David S. Miller  <davem@davemloft.net>
14592
14593        * inssel-sparc.brg: Fix double instruction emit.
14594
14595 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14596
14597         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14598         Get/Set/Address methods.
14599         
14600         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14601         mono_marshal_get_delegate_invoke signature change.
14602
14603 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14604
14605         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14606         This can happens with dynamic methods. Fixes the other bug in #322722.
14607
14608 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14609
14610         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14611         BX call sequence.
14612
14613         * mini-arm.c (arm_patch): Implement patching of BX call
14614         sequence. Fixes one of the bugs in #322722.
14615
14616 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14617
14618        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14619        under Linux.  We only need to flush every 32-byte cache line.    
14620
14621 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14622
14623         * mini.c:
14624         move_basic_block_to_end: Add branches when needed, eventually creating
14625         a new BB.
14626         optimize_branches: added a parameter that tells if it's ok to create
14627         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14628         and avoid calling move_basic_block_to_end when it's not ok.
14629         Fixes bug 318677.
14630
14631 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14632
14633         * mini.c: Abort inlining call to InitializeArray if something
14634         looks wrong.  Let the icall handle it, which now has proper safety
14635         checks.
14636
14637 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14638
14639         * mini.c (mono_spill_call): add support for soft-float.
14640
14641         * mini.c (mono_method_to_ir): add support for soft-float
14642         to inlined functions that return float.
14643
14644         * mini.c (mono_method_to_ir): add support for soft-float
14645         to cee_stsfld opcode on float fields.
14646
14647 2007-11-05  Geoff Norton  <gnorton@novell.com>
14648
14649         * mini-x86.h: Fix the structure access for X86 Leopard.
14650
14651
14652 2007-11-05  Martin Baulig  <martin@ximian.com>
14653
14654         * mini-trampolines.c
14655         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14656         after compiling the method to notify the debugger.
14657
14658 2007-11-05  Martin Baulig  <martin@ximian.com>
14659
14660         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14661
14662 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14663
14664         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14665         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14666
14667 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14668
14669         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14670         native-to-managed wrappers.
14671         
14672 2007-11-01  Geoff Norton  <gnorton@novell.com>
14673
14674         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14675         members.
14676
14677 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14678
14679         * mini.c, mini-x86.c: when getting back from unmanaged code
14680         to managed via a marshaled delegate we also need to set the
14681         right domain.
14682
14683 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14684
14685         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14686         for amd64.
14687
14688 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14689
14690         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14691         let the debugger or other external agents to tell the JIT when
14692         a sw breakpoint has been inserted in the code that the JIT needs
14693         to be able to inspect.
14694
14695 2007-10-31  Martin Baulig  <martin@ximian.com>
14696
14697         * debug-debugger.h
14698         (MonoDebuggerInfo): Remove `runtime_class_init'.
14699
14700 2007-10-30  Martin Baulig  <martin@ximian.com>
14701
14702         * debug-mini.h
14703         (mono_debugger_thread_created): Added `MonoThread *' argument.
14704         (mono_debugger_extended_notification): New public method.
14705         (mono_debugger_trampoline_compiled): New public method.
14706
14707         * debug-mini.c
14708         (MonoDebuggerThreadInfo): Added `thread' and
14709         `extended_notifications' fields.
14710
14711         * debug-debugger.c
14712         (debugger_executable_code_buffer): New static variable.
14713
14714         * debug-debugger.h
14715         (MonoDebuggerInfo): Added `executable_code_buffer',
14716         `executable_code_buffer_size', `breakpoint_info_area',
14717         `breakpoint_table' and `breakpoint_table_size'.
14718
14719 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14720
14721         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14722         that IP  either is an unused value or the vtable pointer. IMT 
14723         calls use vtable + offset now. Reduced by almost half the size
14724         of IMT entries.
14725
14726 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14727
14728         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14729         defines to access param registers. Replace long usage with
14730         gsize as sizeof(long) != sizeof(void*) on Win64.
14731
14732         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14733         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14734         instead of non-existant _GetAddressOfReturnAddress.
14735
14736         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14737         param registers. Save/restore %rdi and %rsi in MonoLMF.
14738
14739         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14740         param registers. Modify (throw_exception) signature to take 
14741         %rdi and %rsi on Win64. 
14742
14743         Code is contributed under MIT/X11 license.
14744
14745 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14746
14747         * helpers.c: unlink debugging output files.
14748
14749 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14750
14751         * mini.c: Move mono_create_ftnptr () to object.c.
14752
14753 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14754
14755         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14756         optional. This function can now be used to disassemble code generated
14757         outside the JIT such as trampolines and IMT thunks.
14758
14759         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14760
14761         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14762         vtable pointer from a ldr instruction.
14763
14764         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14765         new IMT call sequence.
14766
14767         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14768         call sequence for interface invocations.
14769
14770         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14771         for imt support. This function is empty since IMT on ARM requires no
14772         special handling on the IR side.
14773
14774         * mini-arm.c (mono_arch_find_imt_method): added, required for
14775         imt support.
14776
14777         * mini-arm.c (mono_arch_find_this_argument): added, required
14778         for imt support.
14779
14780         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14781         a ldr instruction to load a value stored in the code stream.
14782
14783         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14784         for imt support.
14785
14786
14787 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14788
14789         * mini.c (mini_init): Install the jump trampoline callback.
14790
14791 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14792
14793         * mini-trampolines.c: handle synchronized methods with the common
14794         vtable trampoline (bug #335601).
14795
14796 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14797
14798         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14799
14800         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14801         64 bit platforms.
14802
14803         * mini-ia64.h mini-ia64.c: Add support for IMT.
14804
14805         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14806         prolog. Fixes #331958.
14807
14808 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14809
14810         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14811
14812 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14813
14814         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14815         trampoline.
14816
14817 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14818
14819         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14820         trampoline.
14821
14822 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14823
14824         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14825         trampoline.
14826
14827 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14828
14829         * mini-trampolines.c: changed the magic rampoline to understand
14830         the common vtable trampoline method: the method to invoke is
14831         determined by the vtable displacement of the call.
14832
14833 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14834
14835         * mini.c, mini.h: register the common vtable trampoline if the
14836         architecture supports it.
14837
14838 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14839
14840         * cpu-amd64.md: use the correct max length for tls_get.
14841
14842 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14843
14844         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14845         CEE_STELEM_ANY. Fixes #333696.
14846
14847 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14848
14849         * exceptions-x86.c: provide more graceful handling of the case where
14850         we followed a bogus function pointer from managed code (bug #332866).
14851
14852 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14853
14854         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14855         replaces the generic_shared flag and will carry more information
14856         in the future.
14857
14858         * generic-sharing.c: Added mini_type_stack_size() which allows
14859         allows open types if given a generic sharing context.
14860         mini_get_basic_type_from_generic() takes a
14861         MonoGenericSharingContext* instead of a MonoCompile* now.
14862
14863         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14864         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14865         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14866         changes above.  Just passing arguments through to the right
14867         places.
14868
14869 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14870
14871         * mini-arm.c: unify the call emission to emit_code_seq().
14872
14873 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14874
14875         * tramp-arm.c: reduced the trampoline size.
14876
14877 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14878
14879         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14880         variable handling out of arch-specific code.
14881
14882 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14883
14884         * mini-arm.c: implemented fast delegate dispatch.
14885
14886 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14887
14888         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14889         that fp elimination is turned off if the space required by locals is too
14890         big. Fixes #331958.
14891
14892 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14893
14894         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14895         ARM to the new style trampoline.
14896
14897 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14898
14899         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14900
14901         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14902
14903 2007-10-09  Martin Baulig  <martin@ximian.com>
14904
14905         * debug-debugger.h
14906         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14907         `field_info_offset_offset'.     
14908
14909 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14910
14911         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14912         removed more internal usage of the r11 register and made it available
14913         to the register allocator.
14914
14915 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14916
14917         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14918         when sharing generics and treat type variables as references.
14919
14920 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14921
14922         * mini-ppc.c: started removing the internal uses of register r11
14923         to eventually allow the register allocator to manage it as an
14924         additional available register.
14925
14926 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14927
14928         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14929
14930 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14931
14932         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14933         specific trampolines as they are not performance critical as a jump
14934         target (maybe align as before only for AOT code?). This saves about
14935         200 KB of native code on x86 for monodevelop startup.
14936
14937 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14938
14939         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14940         monodevelop startup.
14941
14942 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14943
14944         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14945
14946         * mini-sparc.h mini-sparc.c: Implement IMT support.
14947
14948         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14949         its smaller and doesn't clobber sparc_g1.
14950
14951         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14952
14953 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14954
14955         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14956
14957 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14958
14959         * mini-ppc.c: implemented fast delegate invocation.
14960
14961 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14962
14963         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14964
14965 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14966
14967         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14968         code to the new style trampoline in preparation for IMT support.
14969
14970 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14971
14972         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14973         systems already. This also reduces the specific trampiline sizes and
14974         prepares for the use of r12 as the IMT identifier register.
14975
14976 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14977
14978         * mini-mips.h: endianess fix (simplified from a patch by
14979         Thomas Kunze <thommy@tabao.de>, bug #323737).
14980
14981 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14982
14983         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14984         to access ucontext fields and enable netbsd support
14985         (partially from Magnus Henoch <mange@freemail.hu>).
14986
14987 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14988
14989         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14990         use the preprocessor from the CPP env var if it is set.
14991
14992 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14993
14994         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14995         code, before interface_offset gets used.
14996
14997 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14998
14999         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
15000         mono_class_setup_vtable () before accessing klass->vtable.
15001
15002 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
15003
15004         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
15005         hackish.
15006
15007 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
15008
15009         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
15010         IMT slots (this saves hundreds of KB of memory in programs like
15011         IronPython and Monodevelop).
15012
15013 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15014
15015         * mini.c: print the delegate counter.
15016
15017 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
15018
15019         * mini-x86.c: make it easier to enable the debugging code for IMT
15020         slots.
15021
15022 2007-09-28  Martin Baulig  <martin@ximian.com>
15023
15024         * debug-debugger.h
15025         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
15026         `mono_method_klass_offset' and `mono_method_token_offset'.
15027
15028 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15029
15030         * mini.c: First generics sharing implementation.  Can only share
15031         in very simple cases.  If sharing doesn't work it falls back to
15032         dedicated compilation.
15033
15034         * mini.h: Flag in MonoCompile to specify whether generic
15035         compilation is shared.  Flags enum for marking which generic inst
15036         of a context is used.  Prototypes for helper functions.
15037
15038         * generic-sharing.c: Helper functions for generic method sharing.
15039
15040         * optflags-def.h: Optimization flag (gshared) for enabling generic
15041         method sharing added.
15042
15043         * Makefile.am: generic-sharing.c added.
15044
15045 2007-09-19 Daniel Nauck <dna@mono-project.de>
15046
15047         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
15048
15049 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
15050         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
15051         fixes bug 325507.
15052
15053 2007-09-19  Martin Baulig  <martin@ximian.com>
15054
15055         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
15056         mono_debug_cleanup() is now part of mono_cleanup().
15057
15058 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15059
15060         * driver.c (mono_main): Fix a warning.
15061
15062 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15063
15064         * aot-compiler.c: Optimize various parts when processing large assemblies.
15065         Fixes ##325568.
15066
15067         * mini.c (mono_patch_info_hash): Improve hash function.
15068
15069 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15070
15071         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
15072         
15073         Code is contributed under MIT/X11 license.
15074
15075 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15076
15077         * mini.c (mini_init): Fix a leak.
15078
15079         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
15080
15081 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15082
15083         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
15084
15085 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15086
15087         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
15088
15089 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15090
15091         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
15092         variance tests.
15093
15094         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
15095
15096         * mini.c (handle_alloc): Enable managed allocators in AOT code.
15097
15098         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
15099
15100         * aot-runtime.c (decode_patch_info): Ditto.
15101
15102 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15103
15104         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
15105         static case. Cache delegates in architecture specific code, 
15106         based on number of parameters.
15107         
15108         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
15109         in architecture specific code, based on number of parameters.
15110         
15111         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
15112         caching happen in architecture specific code now.
15113         
15114         Code is contributed under MIT/X11 license.
15115
15116 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15117
15118         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
15119         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
15120         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
15121
15122         Code is contributed under MIT/X11 license.
15123
15124 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15125         * mini.c: (mono_thread_abort) Fixed bug #82416.
15126
15127 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15128
15129         * mini.: hook the new managed GC allocation feature into the JIT.
15130
15131 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15132
15133         * mini.c: implementation for the new runtime tls opcode.
15134
15135 2007-09-11  Martin Baulig  <martin@ximian.com>
15136
15137         * debug-debugger.h
15138         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
15139         `mono_method_inflated_offset'.
15140
15141 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
15142
15143         * driver.c mini.h mini.c: Add a new devel command line option for injecting
15144         async exceptions into a method.
15145
15146         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
15147         purpose of testing whenever the unwinder works at every instruction.
15148
15149 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
15150
15151         * mini.c: check accessibility of method used in ldftn (fixes
15152         bug #82635).
15153
15154 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
15155
15156         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
15157
15158         * inssel.brg: Fix a warning.
15159
15160 2007-09-03  Martin Baulig  <martin@ximian.com>
15161
15162         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
15163         now takes the `main_method' as argument.
15164
15165 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
15166
15167         * cpu-sparc.md (endfilter): Add missing src1:i argument.
15168
15169 2007-08-30  Jonathan Chambers <joncham@gmail.com>
15170
15171         * driver.c: include the cil-coff.h header on Windows.
15172         
15173         Code is contributed under MIT/X11 license.
15174
15175 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15176
15177         * mini.c, driver.c: don't include the cil-coff.h header.
15178
15179 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15180
15181         * mini.c: flag places that needs fixes fo soft-float support.
15182
15183 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
15184
15185         * mini.h, inssel-float.brg: fix soft-float constant loads on big
15186         endian systems (partially from Dean Jenkins, bug #81924).
15187
15188 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15189
15190         * mini.c (check_linkdemand): Remove embedded reference object in
15191         call to LinkDemandSecurityException.
15192         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
15193         with an IntPtr instead of a reference object.
15194
15195 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15196
15197         * mini.c (handle_initobj): Handle alignment properly.
15198
15199         * inssel.brg (mini_emit_memset): Ditto. 
15200
15201         * inssel.brg (mini_emit_memcpy): Ditto. 
15202
15203         * inssel-sparc.brg: Ditto.              
15204
15205         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
15206
15207 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
15208
15209         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15210         exceptions raised in unmanaged code. Fixes part of #82594.
15211
15212 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15213
15214         * mini.c (mono_method_to_ir), declsec.c
15215         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15216
15217 2007-08-22  Martin Baulig  <martin@ximian.com>
15218
15219         * debug-mini.h
15220         (MonoDebuggerThreadInfo): New typedef.
15221         (mono_debugger_thread_table): New global variable.
15222         (mono_debugger_thread_created): New public function.
15223         (mono_debugger_thread_cleanup): New public function.
15224
15225         * debug-debugger.h
15226         (MonoDebuggerInfo):
15227         - removed `get_current_thread' and `lookup_assembly'.
15228         - removed `data_table'.
15229         - added `thread_table'.
15230
15231         * mini.c
15232         (mono_thread_start_cb): Call mono_debugger_thread_created().
15233         (mono_thread_attach_cb): Likewise.
15234         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15235         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15236         initial domain.
15237
15238         * driver.c (mono_main): Move mono_debug_init() up, before calling
15239         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15240
15241 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15242
15243         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15244         together when passing several arguments of type double (gives a small
15245         speedup and saves a few bytes of generated code).
15246
15247 2007-08-20  Jb Evain  <jbevain@novell.com>
15248
15249         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15250
15251 2007-08-20  Jb Evain  <jbevain@novell.com>
15252
15253         * mini.c (mono_method_to_ir): throw MethodAccessException
15254         and FieldAccessException instead of InvalidProgramException.
15255
15256 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15257
15258         * mini.c: CoreCLR security checks.
15259
15260         * mini.h: Removed MonoSecurityMode (moved to
15261         metadata/security-manager.h) and mono_security_mode global var
15262         (replaced by set/get functions in security-manager.h).
15263
15264         * driver.c: Added "core-clr-test" security mode for testing.  Used
15265         set-function for setting security mode.
15266
15267 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15268
15269         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15270         the new jit_info_table.
15271
15272         * driver.c: Test code for the new jit_info_table (enabled by the
15273         define MONO_JIT_INFO_TABLE_TEST).
15274
15275 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15276
15277         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15278         detection of call <REG> instruction sequence. Fixes build on freebsd.
15279
15280 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15281
15282         * mini-exceptions.c: Fix a warning.
15283
15284 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15285
15286         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15287         stack overflow handling code on amd64 too.
15288
15289         * mini-exceptions.c (mono_setup_altstack): Make this use 
15290         mono_thread_get_stack_bounds ().
15291
15292         * mini-x86.h: Disable sigaltstack on solaris x86.
15293
15294 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15295
15296         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15297
15298 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15299
15300         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15301
15302 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15303
15304         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15305
15306         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15307
15308 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15309
15310         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15311         due to alignment.
15312
15313 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15314
15315         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15316         to be emitted (bug #82281).
15317
15318 2007-08-01  Martin Baulig  <martin@ximian.com>
15319
15320         Merged the `debugger-dublin' branch.
15321
15322         * debug-debugger.h (MonoDebuggerInfo):
15323         Removed the `old_*' compatibility entries.
15324         Added `debugger_version' and `data_table'.
15325         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15326         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15327
15328         * debug-mini.c
15329         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15330         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15331         instead of a `gconstpointer'.
15332         (mono_debugger_insert_method_breakpoint): Return a
15333         `MonoDebugMethodAddressList *'.
15334
15335 2007-06-28  Martin Baulig  <martin@ximian.com>
15336
15337         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15338
15339 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15340
15341         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15342         __builtin_frame_address () since it is broken on older gcc versions.
15343
15344 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15345
15346         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15347         on the stack overflow handling and made the managed stack overflows
15348         catchable in most cases using soft guard pages.
15349         * exceptions-x86.c: added code to restore the protection in the soft
15350         guard pages at the end of exception handling.
15351
15352 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15353
15354         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15355
15356 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15357
15358         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15359         exception handling.
15360
15361 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15362
15363         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15364         signal handling support until it has been ported to the new mechanism.
15365         * mini.c: fixed stack overflow detection and use the new
15366         architecture code  to handle signals on the altstack.
15367
15368 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15369
15370         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15371         stack overflows on the alt stack.
15372
15373 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15374
15375         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15376         stack overflows on the alt stack.
15377
15378 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15379
15380         * exceptions-ppc.c: cleanup preparing for altstack support.
15381
15382 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15383
15384         * exceptions-arm.c: cleanup preparing for altstack support.
15385
15386 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15387
15388         * mini.c (print_jit_stats): Output hazard pointer stats.
15389
15390 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15391
15392         * driver.c, mini.c: Replaced security mode flags with a single
15393         enum variable.
15394
15395 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15396
15397         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15398
15399 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15400
15401         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15402         (which doesn't do anything yet) for activating Core CLR
15403         (Silverlight) security.
15404
15405 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15406
15407         * mini-codegen.c: work around a possible gcc bug on arm.
15408
15409 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15410
15411         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15412         message for platforms that don't support AOT compilation.
15413
15414 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15415
15416         * mini.h, mini.c, driver.c: temporary smcs hack.
15417
15418 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15419
15420         * mini-arm.h, mini-arm.c: arm EABI fixes.
15421
15422 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15423
15424         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15425         case.
15426
15427         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15428         trampolines taking a method argument.
15429
15430         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15431
15432         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15433         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15434
15435         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15436         JIT compilation throws an exception. Fixes #82050.
15437
15438 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15439
15440         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15441         with the MONO_EXCEPTION_ defines.
15442
15443 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15444
15445         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15446         #82117.
15447         
15448         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15449         the cause of an assertion.
15450
15451 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15452
15453         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15454         removed.
15455
15456 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15457
15458         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15459         assert. Should fix #82103.
15460
15461 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15462
15463         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15464         here too. Fixes #82095.
15465
15466         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15467         addresses.
15468
15469         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15470
15471         * mini-amd64.h: Enable IMT for amd64.
15472         
15473         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15474
15475 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15476
15477         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15478
15479 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15480
15481         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15482         as soon as check_linkdemand sets an exception_type.
15483
15484 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15485
15486         * mini-x86.c: fixed offsets for IMT call sequence.
15487         * mini-x86.h: enable IMT again.
15488
15489 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15490
15491         * trace.c (mono_trace_enter_method): Decode MonoType too.
15492
15493         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15494
15495         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15496
15497         * mini-amd64.c: Add preliminary IMT implementation.
15498         
15499 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15500
15501         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15502         understand the new IMT-base interface invocation (thanks to
15503         Daniel Nauck for the report and the remote debugging session).
15504
15505 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15506
15507         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15508
15509 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15510
15511         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15512
15513 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15514
15515         * mini-trampolines.c: implement AOT IMT support.
15516         * mini-x86.h: enable IMT support for wider testing.
15517
15518 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15519
15520         * inssel.brg (emit_imt_argument): Add aot support here.
15521
15522         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15523
15524 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15525
15526         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15527         of the IMT implementation, partially from massi, with my
15528         implementation of the bsearch sequence. Disabled by default until
15529         the AOT code is implemented.
15530
15531 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15532
15533         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15534
15535         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15536
15537 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15538
15539         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15540         arch-independent IMT JIT code from Massimiliano
15541         Mantione (massi@ximian.com) with small cleanups from me.
15542
15543 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15544
15545         * Makefile.am: fix svn invocation to get the svn revision to be
15546         independent of the local language (build fix).
15547
15548 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15549
15550         * mini.c (inline_method): Reset cfg->exception_type if the
15551         inlining is aborted.  Fixes: 82049.
15552
15553 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15554
15555         * mini.c: remove assert from exception handling code when exception_ptr
15556         is not set.
15557
15558 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15559
15560         * mini.c (mono_codegen): Add an assert.
15561
15562         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15563         enter and leave code.
15564         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15565
15566 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15567
15568         * mini-ppc.c: fixed memory corruption for localloc(0)
15569         (bug #81852).
15570
15571 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15572         
15573         * mini.c: Fix warnings.
15574
15575 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15576
15577         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15578         to emit better double->int conversions.
15579
15580 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15581
15582         * mini.c: the provided Min/Max optimizations are valid for unisgned
15583         ints.
15584
15585 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15586
15587         * 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
15588
15589 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15590
15591         * mini.c (mono_running_on_valgrind): Add support for reporting the
15592         method and  its boundaries to valgrind.
15593
15594 2007-06-28  Martin Baulig  <martin@ximian.com>
15595
15596         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15597
15598 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15599
15600         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15601
15602         * generic.2.cs: Add new test case.
15603
15604 2007-06-25  Martin Baulig  <martin@ximian.com>
15605
15606         Merged the `debugger-dublin' branch.
15607
15608         * debug-mini.c
15609         (mono_debugger_insert_method_breakpoint): New public method.
15610         (mono_debugger_remove_method_breakpoint): Likewise.
15611         (mono_debugger_check_breakpoints): New static method.
15612         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15613
15614         * debug-debugger.h (MonoDebuggerInfo):
15615         Renamed (to keep backward compatibility in the vtable):
15616         `insert_breakpoint' -> `old_insert_breakpoint'.
15617         `remove_breakpoint' -> `old_remove_breakpoint'.
15618         `create_string' -> `old_create_string'.
15619         `lookup_class' -> `old_lookup_class'.
15620         `lookup_type' -> removed; changed into a dummy field.
15621         `lookup_assembly' -> `old_lookup_assembly'.
15622         Added (same functionality, but different signature):
15623         `create_string', `lookup_class', `lookup_assembly'
15624         Added new:
15625         `get_method_addr_or_bpt', `remove_method_breakpoint',
15626         `runtime_class_init'.
15627
15628         * debug-debugger.c: Merged the `debugger-dublin' branch.
15629
15630 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15631
15632         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15633         well.
15634         (peephole_pass): Likewise.
15635
15636 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15637
15638         * driver.c: hopefully make setaffinity work also for ancient
15639         versions of linux.
15640
15641 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15642
15643         * driver.c : win32 build fix.
15644
15645 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15646
15647         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15648         processor if it is set.
15649
15650 2007-06-21  Martin Baulig  <martin@ximian.com>
15651
15652         * debug-mini.h: New file.
15653
15654         * debug-mini.c
15655         (mono_debugger_insert_breakpoint_full): Moved here from
15656         ../metadata/mono-debug-debugger.c.
15657         (mono_debugger_remove_breakpoint): Likewise.
15658         (mono_debugger_breakpoint_callback): Likewise.
15659
15660 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15661
15662         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15663         changes in MonoGenericClass.
15664
15665 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15666
15667         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15668
15669 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15670
15671         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15672         removal of MonoGenericMethod.
15673
15674 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15675
15676         * mini-exceptions.c: hooks for the exception events profiling API.
15677
15678 2007-06-14  Randolph Chung  <tausq@debian.org>
15679
15680         * Makefile.ma: Add hppa target.
15681         * mini-arch.h: Include mini-hppa.h
15682         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15683         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15684         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15685
15686 2007-06-14  Randolph Chung  <tausq@debian.org>
15687
15688         * inssel.brg: Add rules for "chained" compare-branch operations so that
15689         a single compare op can affect multiple branches.  Adjust cost for
15690         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15691         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15692         cost for some rules so that they can more easily be overridden by
15693         per-arch rules (with fixes from lupus).
15694         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15695
15696 2007-06-13  Randolph Chung  <tausq@debian.org>
15697
15698         * mini-ops.h: Reorder branch ops so that they match the order of the
15699         corresponding CEE_* ops.  The code expects them this way.
15700         Add new ops for HPPA target.
15701         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15702
15703 2007-06-13  Randolph Chung  <tausq@debian.org>
15704
15705         * mini-exceptions.c: Handle cases where the stack grows towards
15706         larger addresses.
15707         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15708
15709 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15710
15711         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15712         counter.
15713         * driver.c: explain where a non-matching corlib is found.
15714
15715 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15716
15717         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15718
15719 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15720
15721         * mini-exceptions.c: Generate a method profile leave event during
15722         an exception to ensure that the profiler gets notified.
15723
15724 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15725
15726         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15727         branch.
15728
15729         * cpu-amd64.md: Add long_and/or/xor opcodes.
15730
15731 2007-06-06  Wade Berrier  <wberrier@novell.com>
15732
15733         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15734         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15735         length of instruction shr_imm (expected 8, got 10)
15736
15737 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15738
15739         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15740
15741 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15742
15743         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15744         MonoInternalHashTable again (fixed bug in the internal hash table
15745         code).
15746
15747 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15748
15749         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15750         Have to figure out what makes it crash the SWF regression.
15751
15752 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15753
15754         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15755
15756 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15757
15758         * mini.c: optimize out the type check when storing null in a
15759         reference array.
15760
15761 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15762
15763         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15764         MonoInternalHashTable.
15765
15766 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15767
15768         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15769         signed integer methods.
15770
15771 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15772
15773         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15774         permanently since the current approach doesn't work.
15775
15776 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15777
15778         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15779         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15780
15781 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15782
15783         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15784         the sreg2==rdx case.
15785         
15786         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15787         account if it contains a rex prefix.
15788         (peephole_pass): Handle OP_FMOVE as well.
15789
15790 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15791
15792         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15793         as it causes regressions.
15794
15795 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15796
15797         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15798         static case as well.
15799
15800         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15801
15802         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15803         (mono_arch_get_this_arg_from_call): Ditto.
15804
15805         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15806
15807         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15808         invoke_impl field.
15809
15810         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15811         (mono_arch_get_this_arg_from_call): Ditto.
15812
15813         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15814         
15815         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15816         try to create optimized invoke code and use that for further invocations. 
15817         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15818
15819         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15820
15821 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15822
15823         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15824         sealed classes or methods.
15825         *devirtualization.cs: tests for the new optimization
15826
15827 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15828
15829         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15830         by the update_volatile () function.
15831
15832 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15833
15834         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15835         require it.
15836
15837         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15838
15839 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15840
15841         * mini.c: Add configure checks for header files.
15842         * mini-x86.c: Add configure checks for header files.
15843         * trace.c: Add configure checks for header files.
15844         * aot-runtime.c: Add configure checks for header files.
15845         * aot-compiler.c: Add configure checks for header files.
15846         * driver.c: Add configure checks for header files.
15847         * mini-codegen.c: Add configure checks for header files.
15848         
15849         Code is contributed under MIT/X11 license.
15850
15851 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15852
15853         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15854         icompare_imm -128 + op_iclt. Fixes #81703.
15855
15856 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15857
15858         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15859
15860 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15861
15862         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15863         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15864         so that all isinst checks now use "interface_bitmap".
15865
15866 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15867
15868         * cpu-amd64.md (jmp): Fix a warning.
15869
15870         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15871
15872         * basic.cs: Add new regression test.
15873
15874         * basic.cs: Remove test which is now in basic-long.cs.
15875
15876         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15877
15878         * basic-long.cs: Add new test.
15879         
15880 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15881
15882         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15883
15884 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15885
15886         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15887
15888         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15889         places.
15890         
15891         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15892         throwing code a bit.
15893
15894         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15895         the exception throwing code a bit.
15896
15897         * mini-x86.c (get_call_info): Allocate result from a mempool.
15898
15899 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15900
15901         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15902
15903         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15904
15905         * mini.h (MonoCompile): Add 'token_info_hash' field.
15906
15907         * mini.c: Save token->method associations during compilation so the AOT 
15908         compiler can use it.
15909         
15910         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15911         which reference generic classes and methods.
15912
15913 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15914
15915         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15916
15917         * aot-compiler.c (compile_method): Fix a typo in a comment.
15918
15919         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15920
15921         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15922         everything generic.
15923
15924         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15925
15926 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15927
15928         * mini.h (MonoCompile): Add 'args' field.
15929
15930         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15931         into cfg->args.
15932
15933         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15934
15935 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15936
15937         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15938
15939         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15940
15941         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15942         opcodes for some opcodes.
15943
15944         * mini.h *.brg *.c: Use the new opcodes.
15945
15946 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15947
15948         * mini.h: Bumped aot revision.
15949
15950         * inssel.brg: modified code generation of type checks for interfaces
15951         to use the new "MonoClass.interface_bitmap" instead of the old
15952         "MonoClass.interface_offsets".
15953
15954 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15955
15956         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15957
15958 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15959
15960         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15961         64 bit platforms.
15962
15963 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15964
15965         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15966
15967 2007-04-27  Wade Berrier  <wberrier@novell.com>
15968
15969         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15970         mini.h) to fix build.
15971
15972 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15973
15974         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15975         
15976         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15977         causes the corlib unit tests to fail.
15978
15979 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15980
15981         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15982
15983         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15984
15985         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15986         opcodes to the comparison relations.
15987
15988         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15989         opcodes to their types.
15990         
15991         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15992
15993         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15994         it in cfg->arch.cinfo.
15995
15996         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15997
15998         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15999         cfg->cil_offset_to_bb.
16000
16001 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
16002
16003         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
16004         created becase of initlocals.
16005
16006 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
16007
16008         * mini-alpha.c cpu-alpha.md: More alpha port work from 
16009         Sergey Tikhonov <tsv@solvo.ru>.
16010
16011 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
16012
16013         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
16014
16015 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
16016
16017         * cpu-s390.md (break): Correct the length of break instruction.
16018
16019 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
16020
16021         * mini.c: fix a couple of soft-float issues and comments.
16022
16023 2007-04-15  Miguel de Icaza  <miguel@novell.com>
16024
16025         * trace.c (is_filenamechar): - is also a filename char.
16026
16027 2007-04-15  Neale Ferguson <neale@sinenomine.net>
16028
16029         * mini-s390.c: Correct checking for enum type in return value processing.
16030
16031 2007-04-14  Raja R Harinath  <rharinath@novell.com>
16032
16033         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
16034         (version.h): Makefile is in the build directory.
16035
16036 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
16037
16038         * mini-amd64.h: fix for assertion failure on Solaris/amd64
16039
16040 2007-04-11  Martin Baulig  <martin@ximian.com>
16041
16042         * mini.c (can_access_member): Fix handling of generic classes;
16043         fixes #81259.
16044
16045 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
16046
16047         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
16048
16049 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
16050
16051         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
16052
16053 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16054
16055         * mini-codegen.c: make sure the right spill amount is
16056         used for fp or integer registers (fixes the float_sub_spill() on ppc).
16057
16058 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
16059
16060         * mini-ppc.c: fixes for the fp_branch_nan test.
16061
16062 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
16063
16064         * basic.cs: Comment out new test which still fails on ia64.
16065
16066 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
16067
16068         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
16069
16070 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16071
16072         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
16073
16074 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
16075
16076         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
16077         on 64 bit machines. Fixes part of #80738.
16078
16079         * basic.cs: Add regression test.
16080
16081 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
16082
16083         * inssel.brg basic.cs: Revert previous change to fix build.
16084
16085         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
16086         platforms.
16087         
16088         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
16089
16090         * basic.cs: Add new regression test.
16091
16092 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
16093
16094         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
16095         many arguments.
16096
16097 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16098
16099         * cpu-s390x.md: Correct length of break instruction.
16100
16101 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16102
16103         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
16104         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
16105
16106 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
16107
16108         * *.c: Begin WIN64 port.
16109         * mini.c:  Use correct register in profiler.
16110         * mini-amd64.c: No inline assembly on Win64.
16111         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
16112         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
16113         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
16114         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
16115         mono_arch_ip_from_context for Win64.
16116         
16117         Contributed under MIT/X11 license.
16118
16119 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
16120
16121         * exceptions-amd64.c (seh_handler): Ditto.
16122
16123         * exceptions-x86.c (seh_handler): Fix a memory leak.
16124
16125 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
16126
16127         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
16128         mini-s390x.c: fixed peephole optimizations to deal
16129         correctly with 1 and 2 byte reload avoidance.
16130
16131 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
16132
16133         * cpu-s390.md, cpu-s390x.md: update localloc length.
16134
16135 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16136
16137         * cpu-g4.md: added missing descriptions.
16138
16139 2007-03-14  Miguel de Icaza  <miguel@novell.com>
16140
16141         *  Makefile.am: Add support so the tail tests are not executed on
16142         PowerPC as that is a known limitation of the PowerPC port.
16143
16144 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16145
16146         * runmdesc.bat:  Move to msvc directory.
16147         
16148 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16149
16150         * runmdesc.bat:  Run executable that was produced by the current
16151         target and sent via an argument.
16152         
16153 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
16154
16155         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
16156         #81102.
16157
16158         * generics.2.cs: Add regression test.
16159
16160 2007-03-09  Wade berrier  <wberrier@novell.com>
16161
16162         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
16163
16164 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
16165
16166         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
16167         AOT code depends on this.
16168
16169 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16170
16171         * mini.c: more precise tracking of types in the eval stack
16172         (part of fix for bug #81044).
16173
16174 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
16175
16176         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
16177
16178         * aot-compiler.c (encode_patch): Remove an obsolete comment.
16179
16180 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16181
16182         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
16183
16184         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
16185
16186 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
16187
16188         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
16189         a pointer on 64 bit systems. Fixes #80190.
16190
16191         * iltests.il: Add new regression test.
16192
16193 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16194
16195         * mini.c: inline a constant for Environment.IsRunningOnWindows.
16196
16197 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
16198
16199         * trace.c: Remove an erroneous alignemnt check when tracing.
16200           Fixes --trace on OSX86.
16201
16202 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16203
16204         * mini-$(arch).h: initialize SP in context for all the archs.
16205
16206 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
16207
16208         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16209         regressions in the thread tests.
16210
16211 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16212
16213         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16214         - fixed implementation of LOCALLOC opcode
16215         - implemented non-un compare for floats
16216         - code cleanup
16217         - implementation of FDIV and CKFINITE opcodes
16218         - fixes for latest mono updates
16219         - additional arch opcodes
16220
16221 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16222
16223         * Makefile.am: simplify and merge rules for cross-compilation.
16224
16225 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16226
16227         * local-propagation.c: Actually *apply* the fix for bug 80591...
16228
16229 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16230
16231         * mini-exceptions.c: backuot part of the last change
16232         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16233
16234 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16235         * inssel.brg: Fix bug 59286.
16236
16237
16238 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16239
16240         * mini-exceptions.c: patch from Zoltan to correctly check for
16241         stack boundaries (using the stack register, not the frame register),
16242         fixes bugs #80724, #79717.
16243
16244 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16245
16246         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16247         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16248
16249         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16250         presence of frame pointer elimination.
16251
16252 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16253         
16254         * mini-x86.h: NetBSD UCONTEX_REG defines.
16255
16256 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16257
16258         * inssel-amd64.brg: Fix amd64 build.
16259
16260 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16261
16262         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16263         on amd64.
16264
16265 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16266
16267         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16268         ends.
16269
16270         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16271
16272 2007-01-30 Mark Mason <mason@broadcom.com>
16273
16274            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16275            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16276            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16277            beginning support for CEE_JMP [not quite working yet]
16278            * tramp-mips.c: LMF handling now works
16279         
16280 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16281
16282         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16283
16284         * mini.h (NULLIFY_INS): New macro.
16285
16286 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16287
16288         * mini.c: statistical profiler fix for windows, patch
16289         from Tor Lillqvist (tml@novell.com).
16290
16291 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16292         * local-propagation.c: Fix bug 80591.
16293
16294 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16295
16296         * Makefile.am: put back the --export-dynamic option as with
16297         the previous gmodule flags (thanks to Robert Jordan).
16298
16299 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16300
16301         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16302
16303         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16304         simplify and speed up the local register allocator. Also rename some fields
16305         like iassign->vassign.
16306         
16307         * regalloc.c: Remove some functions which are no longer used since their
16308         inlined version is in mini-codegen.c.
16309         
16310         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16311
16312         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16313
16314 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16315
16316         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16317         narrowing. Fixes #80622.
16318
16319         * iltests.il: Add new regresssion test. 
16320
16321 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16322
16323         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16324         debug-debugger.c, debug-debugger.h: warning fixes.
16325         * driver.c: updated copyright year and made it fit in one line.
16326
16327 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16328
16329         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16330
16331 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16332
16333         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16334
16335         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16336
16337         * iltests.il: Add new test for bug #80507.
16338
16339 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16340
16341         * mini-arm.h: use soft-float also on vfp for now.
16342
16343 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16344
16345         * mini.c: fix some more soft-float issues.
16346
16347 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16348
16349         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16350
16351 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16352         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16353         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16354         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16355
16356 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16357
16358         * mini-arm.c: typo fix.
16359
16360 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16361
16362         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16363
16364 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16365
16366         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16367         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16368
16369         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16370
16371         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16372
16373         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16374         
16375         * inssel.brg: Fix a warning.
16376
16377         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16378
16379         * abcremoval.c ssa.c ssapre.c: Update after this change.
16380         
16381         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16382
16383         * dominators.c (df_set): Use mono_bitset_union_fast.    
16384
16385 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16386
16387         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16388         mini-codegen.c: reduce relocations and memory usage for the cpu
16389         description.
16390
16391 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16392
16393         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16394
16395         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16396         to reduce their size.
16397
16398 2007-01-19 Mark Mason <mason@broadcom.com>
16399
16400         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16401         * mini-mips.c: more configuration macros, support long conditional branches, additional
16402         asserts, fix epilog instrumentation.
16403         * mini-mips.h: use standard stack walk
16404         * cpu-mips.md: increase size of div, rem and conditional branches
16405         
16406 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16407
16408         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16409         to cpu spec data.
16410
16411 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16412
16413         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16414         (compile_method): Ditto.
16415
16416         * aot-runtime.c (decode_klass_info): Ditto.
16417
16418         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16419         needed by the code generated by inssel.brg. Also fix a warning.
16420
16421 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16422
16423         * mini.c: deal with enums that become genericinsts by
16424         being nested in a generic class (bug #79956).
16425
16426 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16427
16428         * mini.c: match the generic definition to check for
16429         private access with generic types (bug #78431).
16430
16431 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16432
16433         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16434         to make life easier for people cross-compiling that insist on not
16435         using scratchbox.
16436
16437 2007-01-17 Mark Mason <mason@broadcom.com>
16438
16439         * inssel-long.brg: patch to deal with mips missing flags
16440         * inssel-long32-mips.brg: implement overflow checks
16441         * insset-mips.brg: implement overflow checks
16442         * mini-mips.h: implement conditional exception handling
16443         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16444           Remove unused code, minor cleanups.
16445         * exceptions-mips.c: minor cleanups
16446         * mini-ops.h: add mips conditional exception ops
16447         * cpu-mips.md: add mips conditional exception ops
16448
16449         
16450 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16451
16452         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16453         to deal with mips missing of flags.
16454
16455 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16456
16457         * exceptions-ppc.c: execute fault handlers.
16458
16459 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16460
16461         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16462
16463 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16464
16465         * mini.c: handle also floating point values in initialize_array.
16466
16467 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16468
16469         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16470         array initialization and make it conditional on the intrins option.
16471
16472 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16473
16474         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16475         relocations and put the patch info names close to the enum definition.
16476
16477 2007-01-15 Mark Mason <mason@broadcom.com>
16478
16479         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16480
16481 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16482
16483         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16484
16485 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16486
16487         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16488
16489 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16490
16491         * Makefile.am: distribute the mips sources.
16492
16493 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16494
16495         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16496         directly.
16497
16498 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16499
16500         * cpu-x86.md: back out for now as this triggers other regressions.
16501
16502 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16503
16504         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16505         to eax:edx, so ecx can't get allocated to them (bug #80489).
16506
16507 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16508
16509         * mini.c, mini-exceptions.c: enabled running fault handlers
16510         (bug #80469).
16511
16512 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16513
16514         * driver.c: If nothing fail, do not use the string "failed",
16515         because it makes it very annoying to view test result logs on the
16516         web. 
16517
16518 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16519
16520         * debug-debugger.c (mono_debugger_main): Rename "main" to
16521         "main_method" to prevent a warning.
16522
16523         Remove a warning for unused field.
16524
16525 2006-12-28  Martin Baulig  <martin@ximian.com>
16526
16527         * debug-debugger.c
16528         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16529
16530 2006-12-22  Martin Baulig  <martin@ximian.com>
16531
16532         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16533         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16534         seperate `.mdb_debug_info' section, so we can access it from the
16535         debugger even if the binary is stripped.
16536
16537         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16538         from the `.mdb_debug_info' here to prevent the linker from
16539         removing that section.
16540
16541         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16542         mdb-debug-info64.s.
16543
16544 2006-12-19  Robert Jordan  <robertj@gmx.net>
16545
16546         * mini-x86: enable the code to return small structures in
16547         registers for FreeBSD as well. Fixes bug #80278.
16548         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16549
16550 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16551
16552         * mini-x86.c: align the stack when calling the profiler
16553         function instrumenting the prolog (on OSX).
16554
16555 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16556
16557         * mini.c: emit a break opcode where Debugger.Break () is called.
16558
16559 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16560
16561         * mini.c (mono_method_to_ir): Provide useful information on this
16562         assert, to prevent others from debugging like I did.
16563
16564 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16565
16566         * mini.c: enable code which was incorrectly commented
16567         (bug #80235).
16568
16569 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16570
16571         * mini-x86.c: enable on OSX, too, the code to return small
16572         structures in registers.
16573
16574 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16575
16576         * mini-x86.c: remove the use of the dynamic code manager here, too.
16577
16578 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16579
16580         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16581         mono_debugger_create_notification_function() to use
16582         mono_global_codeman_reserve () instead of a dynamic code manager.
16583
16584 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16585
16586         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16587         ves_array_element_address() jit icall and use a generated
16588         managed method instead (which is about 4 times faster for a rank 3
16589         array access).
16590
16591 2006-11-29  Mark Mason  <mason@broadcom.com>
16592
16593         * basic-calls.cs: additional tests for passing
16594         structures as function arguments.
16595
16596 2006-11-29  Mark Mason  <mason@broadcom.com>
16597
16598         * mini-mips.h: disable custom exception handling
16599         * mini-mips.c: throw/rethrow should use jalr to call
16600         exception stubs.  Fixed bug with passing structures
16601         by value. More support for tracing floating point
16602         functions.
16603
16604 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16605
16606         * mini.c: fixed typo in the soft-float ldind.r4 handling
16607         (bug #80086).
16608
16609 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16610
16611         * mini.c, mini.h, driver.c: added --runtime command line
16612         option to select a different runtime than the autodetected one.
16613         * jit.h: added API for embedders to initialize with a specific
16614         runtime version.
16615
16616 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16617
16618         * mini.c: handle also boxing of r4 values (bug #80024).
16619
16620 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16621
16622         * mini-ppc.c: force indirect calls until we reserve
16623         enough address space for all the generated code.
16624
16625 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16626
16627         * exceptions-arm.c: workaround bugs in the libc definition
16628         of struct ucontext.
16629
16630 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16631
16632         * inssel.brg: fixes from me and Mark Mason.
16633
16634 2006-11-23  Dick Porter  <dick@ximian.com>
16635
16636         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16637         semaphore display now we've fixed the initial value
16638
16639 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16640
16641         * inssel.brg: partially revert the last change to fix the build.
16642
16643 2006-11-21  Mark Mason  <mason@broadcom.com>
16644
16645         * inssel.brg: Add and use compare-and-branch macros to support
16646         architectures that do not have condition code registers (ie. MIPS).
16647         * *-mips.{c,brg,md}: Fix copyright statements
16648
16649 2006-11-20  Mark Mason  <mason@broadcom.com>
16650
16651         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16652         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16653         * mini.h: Added declaration for mono_print_ins()
16654         * mini-codegen.c: added ins_spec initializer for MIPS
16655         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16656         vreg to be virtual and hreg to be non-virtual.
16657         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16658         is not yet working/implemented correctly.
16659         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16660         non-static, fixup calls to print_ins() from other parts in the file.
16661
16662 2006-11-20  Mark Mason  <mason@broadcom.com>
16663
16664         * basic-calls.cs: added tests for passing structures as arguments
16665         to calls.
16666
16667 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16668
16669         * inssel-long32.brg: optimize signed division by power of two.
16670
16671 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16672
16673         * mini-arm.c: added support for interworking with thumb code
16674         (mono must be still be built using the ARM instruction encoding).
16675
16676 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16677
16678         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16679         verifier has different rules for it.   Fixes a few verifier issues
16680         in the test suite.
16681
16682         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16683         at the end, so people know what happened.
16684
16685 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16686
16687         * brach-opts.c: in optimize_exception_target() make sure we
16688         are in a catch clause (fixes bug #79871).
16689
16690 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16691
16692         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16693         more soft-float support fixes.
16694
16695 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16696
16697         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16698         that are passed half on the stack and half in registers.
16699
16700 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16701
16702         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16703         more mips integration work from Mark E Mason 
16704         <mark.e.mason@broadcom.com>.
16705
16706 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16707
16708         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16709         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16710         tramp-mips.c: added sources for the mips port, not
16711         integrated in the build yet. Contributed by
16712         Mark E Mason <mark.e.mason@broadcom.com>.
16713
16714 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16715
16716         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16717
16718 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16719
16720         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16721         put the soft-float rules in its own file since it seems to
16722         break s390 compilation.
16723
16724 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16725
16726         * mini-arm.c: fixed wrnings.
16727
16728 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16729
16730         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16731         inssel-arm.brg: ARM support for soft-float.
16732
16733 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16734
16735         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16736         loads and stores of 32 bit fp values.
16737
16738 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16739
16740         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16741
16742         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16743         works. Fixes #79852 and #79463.
16744
16745 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16746
16747         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16748         more soft-float support WIP and fixes.
16749
16750 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16751
16752         * mini-arm.c: some VFP updates.
16753
16754 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16755
16756         * mini-exceptions.c: 0 is a valid local var offset in some
16757         architectures, don't assert (bug #78508).
16758
16759 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16760
16761         * exceptions-arm.c: fixed off by one error in stack walk code.
16762
16763 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16764
16765         * mini.h, mini.c: more precise tracking of type load exceptions.
16766
16767 2006-11-03  Robert Jordan  <robertj@gmx.net>
16768
16769         * Makefile.am: [WIN32] Add monow.exe target.
16770         * driver.c: [WIN32] Don't detach the console when debugging.
16771         Fixes bug #79797.
16772         
16773 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16774
16775         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16776
16777 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16778
16779         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16780
16781         * driver.c (mini_regression): Fix --regression with AOT.
16782
16783         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16784
16785 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16786
16787         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16788
16789         * mini-sparc.h: Don't use sigaction on sparc/linux.
16790
16791         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16792
16793         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16794
16795         * mini-exceptions.c: Add proper include files for getpid ().
16796
16797 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16798
16799         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16800         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16801         method.
16802
16803         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16804         name cache to reduce its size.
16805
16806         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16807
16808 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16809
16810         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16811         the mono_lmf TLS variable.
16812
16813         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16814         trampoline lmf frames.  
16815
16816         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16817
16818 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16819
16820         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16821         the mono_lmf TLS variable.
16822
16823         * mini-exceptions.c: Access the LMF structure through accessors.
16824
16825         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16826         variable instead of in jit_tls->lmf.
16827
16828         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16829         
16830         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16831         trampoline lmf frames.
16832
16833         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16834
16835 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16836
16837        * mini.c trace.c mini-x86.c: Revert these too.
16838         
16839        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16840        signature change.
16841
16842 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16843
16844         * genmdesc.c: removed now dead code.
16845
16846 2006-10-09  Robert Jordan <robertj@gmx.net>
16847
16848         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16849
16850 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16851
16852         * mini.h: do not leave gaps in the opcode values.
16853
16854 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16855
16856         * jit-icalls.h: flag functions as internal here, too.
16857
16858 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16859
16860         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16861         functions with the internal attribute.
16862
16863 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16864
16865         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16866
16867 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16868
16869         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16870         for soft-float.
16871
16872 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16873
16874         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16875         tail calls as on other platforms.
16876
16877         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16878
16879         * iltests.il: Add a few tailcall tests.
16880
16881 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16882
16883         * driver.c: fix loop for old compilers (bug #79521).
16884
16885 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16886
16887         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16888
16889         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16890
16891         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16892         metadata without any code.
16893
16894         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16895         more precise debugging information using gdb.
16896
16897 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16898
16899         * inssel-ia64.brg: Make the helper methods static.
16900
16901 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16902
16903         * inssel-x86.brg: make the helper methods static.
16904
16905 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16906
16907         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16908
16909 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16910
16911         * mini.c: updates for monoburg changes.
16912         * inssel.brg: make a few helper functions static as they should.
16913
16914 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16915
16916         * Makefile.am: Move mini-codegen.c to common_sources.
16917
16918 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16919
16920         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16921         instructions.
16922         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16923         mini-ppc.h: port to use the common local register allocator.
16924
16925 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16926
16927         * mini.h: Remove the comment too then.
16928
16929 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16930
16931         * mini.h: put back backend.data which is to be used shortly and
16932         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16933         pointers on 4 byte boundaries it'd have much bigger issues running
16934         and you can ifdef it out anyway.
16935
16936 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16937
16938         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16939         MonoInst size by 4 bytes on 64 bit machines.
16940
16941 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16942
16943         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16944         replacement with more meaningful field names. Arch maintainers, please
16945         check the assigned names are good enough for your arch.
16946
16947 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16948
16949         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16950         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16951
16952 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16953
16954         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16955         relocations and memory requirements, put the optimization flags
16956         definitions in their own file.
16957
16958 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16959
16960         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16961
16962         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16963
16964 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16965
16966         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16967
16968 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16969
16970         * inssel.brg: use the correct function to get the size of an item
16971         in an array, given an element class.
16972         * aot-compiler.c: do not access class->class_size directly.
16973
16974 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16975
16976         * mini.h, debug-mini.c: added a debugging function to print
16977         info about local variables and arguments in a jitted method.
16978
16979 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16980
16981         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16982
16983         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16984
16985 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16986
16987         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16988         inner and outer loops when passing vtypes.
16989
16990 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16991
16992         * mini-ppc.c: take into account the cpu errata for cache flushing
16993         which caused some random errors (bug #79381).
16994
16995 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16996
16997         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16998         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16999
17000 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
17001
17002         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
17003         loaded.
17004
17005         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
17006         freebsd ports tree.
17007
17008         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
17009         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
17010
17011         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
17012         displacement.
17013
17014 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
17015
17016         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
17017
17018 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
17019
17020         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
17021         macro does not have to be changed during debugging.
17022
17023         * 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>.
17024
17025         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
17026
17027         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
17028         
17029         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
17030         MONO_ARCH_NO_EMULATE_MUL is defined.
17031
17032         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
17033
17034         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
17035
17036         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
17037
17038         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
17039         
17040 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
17041
17042         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
17043         stuff to mini-exceptions.c where it is used.
17044
17045         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
17046         setup code, the real one is in mini-exceptions.c.
17047
17048         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
17049         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
17050         some changes from the freebsd ports tree.
17051
17052         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
17053         constants.
17054         
17055         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
17056
17057 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
17058
17059         * mini.c: on Linux, check for /proc to be mounted
17060         (bug# 79351, novell bug#201204).
17061
17062 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
17063
17064         * mini.c: handle cases where pthread_attr_getstack() behaves
17065         incorrectly (bug #78096).
17066
17067 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
17068
17069         * mini-arm.c: support larger stack frames (bug #79272).
17070
17071 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
17072
17073         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
17074
17075         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
17076         tokens.
17077
17078         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
17079         mono_class_from_name () to find a class from its name.
17080
17081         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
17082
17083 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
17084
17085         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
17086
17087 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
17088
17089         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
17090
17091 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
17092
17093         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
17094         callinfo->trampoline.
17095
17096         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
17097         fixes #79271.
17098         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
17099         future.
17100
17101 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
17102
17103         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
17104
17105 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
17106
17107         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
17108         stats.method_trampolines, it is already done by the generic trampoline code.
17109
17110         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
17111         
17112 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
17113
17114         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
17115
17116         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
17117
17118         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
17119
17120         * mini.c (print_jit_stats): Print mscorlib mempool size too.
17121         
17122         * mini.c (print_jit_stats): Print new stats.
17123
17124         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
17125
17126 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
17127
17128         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
17129         Address on two dimensional arrays. Fixes #78729.
17130
17131         * mini.h (MonoCompile): Add a 'skip_visibility' field.
17132
17133         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
17134         a method.
17135
17136         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
17137
17138         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
17139         #79130.
17140         
17141         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
17142         a race condition.
17143         (mini_get_ldelema_ins): Ditto.
17144
17145 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
17146
17147         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
17148         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
17149         Fixes #79213.
17150
17151 2006-08-29 Neale Ferguson <neale@sinenomine.net>
17152
17153         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
17154         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
17155
17156         * exceptions-s390x.c: Cosmetic change.
17157
17158         * tramp-s390.c: Fix warning.
17159
17160         * cpu-s390.md: Correct length of mul_imm.
17161
17162 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
17163
17164         * aot-compiler.c: added binary writer with ELF backend
17165         implementation (only on Linux/x86 for now).
17166
17167 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17168
17169         * Makefile.am: Don't run net 2.0 AOT tests.
17170
17171         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
17172         (mono_compile_assembly): Skip net 2.0 assemblies as well.
17173
17174         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
17175
17176 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17177
17178         * aot-compiler.c: simplified and refactored the asm-writing code
17179         to allow different backends.
17180
17181 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17182
17183         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
17184
17185         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
17186         little. Share patches of type TYPE_FROM_HANDLE as well.
17187
17188         * mini.c (mono_patch_info_equal): New helper function.
17189         (mono_patch_info_hash): Ditto.
17190
17191         * aot-compiler.c (emit_method_code): Fix s390 build.
17192
17193         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
17194         is not handled because it is stored as a flag and not as a type ctor. Fixes
17195         #79016.
17196
17197 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
17198
17199         * aot-compiler.c: Fix computation of GOT slot statistics.
17200         
17201         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
17202         Also remove support for not PIC AOT.
17203
17204         * mini.h: Bump AOT file format version.
17205
17206         * objects.cs: Add a test for #78990.
17207
17208         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17209         (peter.dettman@iinet.net.au). Fixes #79087.
17210
17211         * basic-long.cs: Add a test for the above.
17212
17213 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17214
17215         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17216         
17217         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17218         code somewhat.
17219
17220 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17221
17222         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17223         exceptions.
17224
17225 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17226
17227         * mini.c: Don't verify COM proxy invoke calls
17228         
17229
17230 2006-08-10  Dick Porter  <dick@ximian.com>
17231
17232         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17233         which process is holding semaphores locked.
17234
17235 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17236
17237         * mini-ia64.c mini-amd64.c: Fix #79027.
17238
17239         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17240
17241         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17242
17243         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17244         implicit arguments in a vararg call. Fixes #79027.
17245
17246 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17247
17248         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17249         (mono_get_array_new_va_signature): Ditto.
17250
17251 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17252
17253         * aot-runtime.c: Call init_plt lazily.
17254
17255         * inssel-long.brg: Fix unsigned long->int conversion.
17256
17257         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17258
17259         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17260         that most data is now in the .rss/.data section.
17261
17262 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17263
17264         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17265
17266         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17267
17268         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17269
17270         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17271
17272         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17273         virtual call. Fixes #79010.
17274
17275         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17276         and use the result as the this argument in the real call.
17277
17278         * generics.2.cs: Add a new test for #79010.
17279         
17280 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17281
17282         * mini-x86.c: Fix a warning.
17283
17284         * aot-compiler.c: Add a bunch of statistics.
17285
17286         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17287
17288 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17289
17290         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17291
17292 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17293
17294         * 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>.
17295
17296 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17297
17298         * mini.c (mono_method_to_ir): Obtain the original method in the
17299         CIL stream and use this to perform validation.
17300
17301         Fixed: #78816
17302
17303 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17304
17305         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17306         (mono_arch_call_opcode): Ditto.
17307
17308         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17309         #78826.
17310
17311         * mini.c (mono_patch_info_dup_mp): New helper function.
17312         
17313         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17314         compilation. Fixes #78827.
17315
17316 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17317
17318         * declsec.c: Use original security informations for
17319           MONO_WRAPPER_MANAGED_TO_MANAGED.
17320
17321 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17322
17323         * mini.c: Allow Com Interop methods/classes and
17324         don't verify COM wrapper calls
17325         
17326
17327 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17328
17329         * inssel-long32.brg: Fix long->i4 checked conversion.
17330
17331         * exceptions.cs: Add a test for the above.
17332
17333 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17334
17335         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17336
17337         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17338         leaks.
17339
17340         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17341         #78775.
17342
17343 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17344
17345         * mini.c: Fix solaris/x86 exception handling.
17346
17347         * Makefile.am: Get rid of $(ICU_LIBS).
17348
17349 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17350
17351         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17352         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17353         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17354
17355         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17356
17357         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17358         this function causes a SIGSEGV.
17359
17360 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17361
17362         * mini.c: Remove unused solaris/x86 includes.
17363
17364 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17365
17366         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17367
17368 2006-06-20  Jb Evain  <jbevain@gmail.com>
17369
17370         * cpu-g4.md: fix max length of start_handler instruction.
17371
17372 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17373         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17374
17375 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17376         * ssa.c: Fixed bug 78653 for SSA based deadce.
17377         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17378         MonoInst.flags, used in SSA based deadce.
17379         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17380         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17381
17382 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17383
17384         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17385         it can end up using non executable memory on ppc64 systems
17386         running ppc32 userspace (fix from Johannes Berg).
17387
17388 2006-06-14  Dick Porter  <dick@ximian.com>
17389
17390         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17391         4.1.1
17392
17393 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17394         * mini.c: Made so that inline is locally disabled if it would
17395         trigger a .cctor, because too many apps depend on this behavior
17396         (which seems to be also the one of the MS CLR).
17397
17398 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17399
17400         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17401         No idea why this worked before.
17402
17403         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17404         which branch to outer exception clauses since they could skip the
17405         inner finally clauses. Fixes #78633.
17406
17407         * exceptions.cs: Add a test for the above.
17408
17409         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17410         Fixes #78629.
17411
17412         * iltests.il: Add a test for the above.
17413
17414 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17415
17416         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17417         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17418
17419         * iltests.il: Add a test for the above.
17420
17421 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17422
17423         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17424         
17425         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17426         methods as instrinsics.
17427
17428 2006-06-09  Wade Berrier <wberrier@novell.com>
17429
17430         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17431         (simple-cee-ops.h ssapre-mini-ops.h)
17432
17433 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17434
17435         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17436         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17437         instruction).
17438         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17439         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17440
17441 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17442
17443         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17444
17445 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17446
17447         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17448         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17449         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17450         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17451         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17452         of opcodes, so that bug 78549 should not happen again.
17453         * ssapre.c: Updated to use the renamed files.
17454
17455 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17456
17457         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17458         in OP_ATOMIC_EXCHANGE_I4.
17459
17460 2006-06-07  Wade Berrier <wberrier@novell.com>
17461
17462         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17463         in mono_debugger_create_notification_function)
17464
17465 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17466
17467         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17468         
17469         * mini.c (type_from_stack_type): Disable some changes which do not
17470         seem to work.
17471
17472         * driver.c: Reenable opts.
17473
17474         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17475         of the evaluation stack.
17476         
17477         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17478         evaluation stack trace at entry to the bblock.
17479
17480         * mini.c (merge_stacks): New function to perform verification of stack merges.
17481         Turned off by default.
17482
17483         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17484         STACK_MP.
17485         
17486 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17487
17488         * local-propagation.c: Fixed bug 78549.
17489
17490 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17491
17492         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17493
17494 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17495
17496         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17497         tramp-arm.c, tramp-ia64.c
17498         (mono_debugger_create_notification_function): Update signature to
17499         new signature and use new protocol for creating the notification
17500         function.  
17501
17502         Should fix the build.
17503
17504 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17505
17506         * exceptions-ppc.c (mono_jit_walk_stack)
17507         (ves_icall_get_frame_info): Fix the build
17508
17509 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17510
17511         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17512
17513 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17514
17515         * il2tests.2.il: New file for generics CIL tests.  Add test for
17516         #78019.
17517         * Makefile.am: Update.
17518
17519         Fix #78019
17520         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17521         to nullable types.
17522
17523 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17524
17525         * aliasing.c: Fixed bug 78311.
17526
17527 2006-05-29  Martin Baulig  <martin@ximian.com>
17528
17529         * mini-exceptions.c (mono_find_jit_info): When computing the
17530         native offset, check whether we're actually inside the method's
17531         code; call mono_debug_print_stack_frame() to format the frame.
17532         (ves_icall_System_Exception_get_trace): Call
17533         mono_debug_print_stack_frame() to format the stack frame.
17534         (ves_icall_get_trace): Update to the new debugging API.
17535         (mono_jit_walk_stack_from_ctx): Likewise.
17536         (ves_icall_get_frame_info): Likewise.
17537
17538         * mini.c (get_method_from_ip): Use the new debugging API.
17539         (mono_print_method_from_ip): Likewise.
17540
17541         * exceptions-ppc.c
17542         (mono_jit_walk_stack): Use the new debugging API.
17543         (ves_icall_get_frame_info): Likewise.   
17544
17545 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17546
17547         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17548
17549 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17550
17551         * mini.c: Added "limitator" to inline for debugging.
17552
17553 2006-05-24  Martin Baulig  <martin@ximian.com>
17554
17555         * debug-debugger.c (mono_debugger_init): Create a private,
17556         malloc()-based code manager for the notification function and
17557         intentionally leak it on exit.  This fixes the crash-on-exit race
17558         condition.
17559
17560         * tramp-amd64.c
17561         (mono_debugger_create_notification_function): Added
17562         `MonoCodeManager *' argument.
17563
17564         * tramp-x86.c
17565         (mono_debugger_create_notification_function): Added
17566         `MonoCodeManager *' argument.
17567
17568 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17569
17570         * aliasing.c: Fixed 64 bit issue.
17571         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17572         default since all known bugs are fixed (one more time!).
17573
17574 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17575
17576         * mini.c: write barrier support.
17577
17578 2006-05-23  Martin Baulig  <martin@ximian.com>
17579
17580         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17581         check at the top of the file.
17582
17583 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17584
17585         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17586         reverting changes without reason and without changelog entries.
17587
17588 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17589
17590         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17591         to a few opcodes. Fixes #78439.
17592
17593         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17594         consistency with other archs.
17595
17596         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17597
17598 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17599
17600         * debug-debugger.c: fix the build.
17601
17602 2006-05-17  Martin Baulig  <martin@ximian.com>
17603
17604         * debug-debugger.c
17605         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17606         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17607         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17608         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17609
17610 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17611
17612         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17613
17614 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17615
17616         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17617         MONO_TYPE_GENERICINST.
17618         
17619         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17620         MONO_TYPE_GENERICINST.
17621
17622 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17623
17624         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17625         #78325.
17626
17627 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17628
17629         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17630         mempool.
17631         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17632
17633 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17634
17635         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17636         mono_trace_cleanup ().
17637
17638         * iltests.il: Fix problem with the newly added test.
17639
17640         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17641         due to register constraints, free up the previous hreg. Fixes #78314.
17642
17643         * iltests.il: Add new test for #78314.  
17644
17645         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17646         Interlocked.Add. Fixes #78312.
17647
17648         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17649         
17650 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17651
17652         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17653
17654 2006-05-05  Martin Baulig  <martin@ximian.com>
17655
17656         * debug-mini.c (mono_debug_open_block): New method.
17657
17658         * mini-amd64.c
17659         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17660         the beginning of each basic block.
17661
17662         * mini-x86.c
17663         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17664         the beginning of each basic block.
17665
17666 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17667
17668         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17669         default until I understand why they break the build on amd64.
17670
17671 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17672
17673         * mini.c (mini_cleanup): Call mono_cleanup ().
17674
17675         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17676         errors.
17677
17678 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17679
17680         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17681         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17682         default since all known bugs are fixed, and I cannot reproduce bug
17683         77944... I'm asking Matt Hargett to test again after this commit.
17684
17685 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17686
17687         * mini-codegen.c: Fixed typo that thrashed inline.
17688
17689 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17690
17691         * dominators.c (compute_dominators): Avoid using a worklist since
17692         it is not correct in some cases. Instead, iterate over all bblocks as
17693         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17694
17695 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17696
17697         * mini.c (mono_jit_compile_method_inner): Use
17698         mono_prepare_exception_from_error that resets the value
17699         internally.
17700
17701 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17702
17703         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17704         
17705 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17706
17707         * aliasing.c: Fixed bug 78210.
17708
17709 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17710
17711         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17712         default until all their problems (or the ones they trigger) are fixed.
17713
17714 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17715
17716         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17717         
17718         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17719         as loaded only after resolving patches since that could invoke the same method.
17720
17721         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17722
17723         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17724         functions.
17725
17726         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17727         AOT loader.
17728
17729         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17730         stack.
17731
17732         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17733         made from AOT code through the PLT table.
17734
17735         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17736         holding the plt offset when a call is made to the aot plt trampoline.
17737         
17738 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17739
17740         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17741         amd64 AOT support.
17742
17743         * Makefile.am (common_sources): Fix build breakage.
17744
17745         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17746         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17747         intra-assembly calls if possible.
17748         
17749         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17750
17751         * mini-trampolines.c: Handle PLT entries.
17752
17753         * mini.c: Avoid creating a GOT var for calls.
17754
17755         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17756         from mscorlib code.
17757
17758         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17759         from mscorlib code.
17760
17761         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17762         AOT code.       
17763
17764         * mini.h: Bump AOT file format version.
17765         
17766         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17767         covers more cases.
17768
17769 2006-04-25  Martin Baulig  <martin@ximian.com>
17770
17771         * driver.c: Disable copyprop, consprop and inline when running
17772         inside the debugger.
17773
17774 2006-04-25  Martin Baulig  <martin@ximian.com>
17775
17776         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17777         with `get_current_thread' and added `detach'.
17778         (MonoDebuggerMetadataInfo): Added `thread_size',
17779         `thread_tid_offset', `thread_stack_ptr_offset' and
17780         `thread_end_stack_offset'.
17781
17782 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17783
17784         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17785         aot-runtime.c.
17786
17787         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17788         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17789
17790         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17791
17792         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17793
17794         * aot.c: Add support for ADJUSTED_IID.  
17795
17796 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17797
17798         * aot.c (emit_method_order): Don't align method_order_end.
17799
17800         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17801         the interface ID changes.
17802
17803 2006-04-21  Dick Porter  <dick@ximian.com>
17804
17805         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17806         cleaning up a thread.  Fixes the new part of bug 77470.
17807
17808 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17809
17810         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17811         to managed wrapper.
17812                      
17813 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17814
17815         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17816         
17817         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17818         SIGSEGV. Fixes #78072.
17819
17820         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17821         unregister our SIGABRT handler.
17822
17823 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17824
17825         * mini.c: Disabled inline where it can alter the call stack in a
17826         way visible from managed code.
17827         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17828         default.
17829
17830 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17831
17832         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17833         on other platforms. Fixes #78089.
17834
17835 2006-04-13  Martin Baulig  <martin@ximian.com>
17836
17837         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17838         determine whether we're inside the debugger.
17839
17840         * debug-debugger.h
17841         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17842
17843 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17844
17845         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17846         handler clauses. Fixes #78024.
17847
17848         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17849         in the CALL_MEMBASE opcodes. Fixes #78088.
17850         (mono_arch_get_vcall_slot_addr): Ditto.
17851
17852 2006-04-10  Martin Baulig  <martin@ximian.com>
17853
17854         * debug-debugger.c: The thread handling code has now been moved
17855         into ../metadata/threads.c.
17856
17857 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17858
17859         * driver.c (mono_main): Fix --with-gc=none build.
17860
17861         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17862         (mono_spillvar_offset_float): Ditto.
17863         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17864         hreg, not when its !global, since on ia64, there is a third category: stacked
17865         registers.      
17866
17867 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17868
17869         * mini.c: set MonoInst->klass for load field address and a few other
17870         places.
17871
17872 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17873
17874         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17875
17876 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17877
17878         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17879         the branch opt changes.
17880
17881 2006-04-06  Dick Porter  <dick@ximian.com>
17882
17883         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17884         
17885         * wapihandles.c (mini_wapi_seminfo): 
17886         * driver.c (mono_main): Add semaphore info option
17887
17888 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17889
17890         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17891         branch optimization changes. Fixes #78009.
17892
17893 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17894
17895         * mini.c: ignore accessibility of methods in managed->native wrappers.
17896
17897 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17898
17899         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17900         
17901         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17902
17903 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17904
17905         * mini.c: Modify the branch optimizations to preserve the invariant that
17906         the entries inside the in_bb and out_bb arrays are unique.
17907         (mono_unlink_bblock): Avoid creation of new arrays.
17908
17909 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17910
17911         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17912         change (#77992).
17913
17914 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17915
17916         * mini.c (optimize_branches): Remove the "optimizations" in
17917         the cbranch1/cbranch2 -> branch cases which were causing several
17918         problems in the past. Fixes #77986.
17919
17920 2006-03-31  Chris Toshok  <toshok@ximian.com>
17921
17922         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17923         default optimizations :(
17924
17925 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17926
17927         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17928         branch.
17929
17930 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17931
17932         * local-propagation.c: Added comments to structs and removed
17933         "Mono" prefixes from local tree mover types.
17934
17935 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17936
17937         * Makefile.am (arch_sources): Define this for each architecture so 
17938         libmono_la_SOURCES is defined in one place.
17939
17940 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17941
17942         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17943         from handles/.
17944
17945 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17946
17947         * driver.c: print the GC name supplied by configure.
17948
17949 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17950
17951         * local-propagation.c: Added tree mover, and moved here all the
17952         local propagation code from mini.c
17953         * mini.c: Added support for treeprop, and moved all the local
17954         propagation code to local-propagation.c
17955         * mini.h: Added support for treeprop
17956         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17957         treeprop, inline and deadce by default
17958         * Makefile.am: Added local-propagation.c
17959
17960 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17961
17962         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17963
17964 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17965
17966         * debug-debugger.c: make it compile without the Boehm GC.
17967
17968 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17969
17970         * mini.c: fixed issue with mismatch when an icall is registered
17971         with multiple names but same address.
17972
17973 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17974
17975         * declsec.c, mini-exceptions.c: use write barrier to set reference
17976         fields of managed objects.
17977
17978 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17979
17980         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17981         (can_access_internals): Fix a warning.
17982
17983         * mini.c (print_method_from_ip): Rename this to 
17984         mono_print_method_from_ip so it gets exported.
17985
17986         * trace.c: Deal with strings inside StringBuilder's containing garbage
17987         and fix memory leaks. Fixes #77848.
17988
17989 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17990
17991         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17992         fixes #77787.
17993
17994 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17995         
17996         * mini-s390.c: Remove OP_X86_TEST_NULL.
17997
17998 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17999
18000         * mini.c: use the correct GetHashCode() for the moving collector.
18001
18002 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
18003
18004         * liveness.c: Regalloc spill cost tuning.
18005
18006 2006-03-15 Neale Ferguson <neale@sinenomine.net>
18007         
18008         * mini-s390x.h: Correct S390_LONG macro.
18009
18010         * mini-s390x.c: Cleanup unused code.
18011
18012 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
18013
18014         * jit-icalls.h: New file.
18015
18016         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
18017         icalls and include that instead of including jit-icalls.c.
18018
18019         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
18020         OP_X86 opcodes.
18021
18022 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
18023
18024         * mini.c: when checking for member accessibility, also check for
18025         friend assemblies and for explicit interface implementations.
18026
18027 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
18028
18029         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
18030
18031         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
18032
18033         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
18034         common cases are done first.    
18035
18036         * mini-ops.h: Only define platform specific opcodes on the given platform.
18037
18038         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
18039         branch.
18040         
18041 2006-03-14  Martin Baulig  <martin@ximian.com>
18042
18043         Revert Paolo's change from r57348:
18044
18045         * mini.h: don't use gboolean for bitfields.
18046         * mini.c: verifier changes for fields and methods accessibility.
18047
18048 2006-03-13  Neale Ferguson <neale@sinenomine.net>
18049
18050         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
18051
18052         * mini-s390x.c: Fix conv_r_un.
18053
18054         * cpu-s390, cpu-s390x.md: Fix lengths.
18055
18056 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
18057
18058         * mini.c: nested types have access to all the nesting
18059         levels, not just the enclosing types.
18060
18061 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
18062
18063         * mini.c: added a few more verification checks.
18064
18065 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
18066
18067         * liveness.c: Merge optimizations from the linear-il branch.
18068
18069 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
18070
18071         * mini-ia64.c (emit_call): Add a comment.
18072
18073         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
18074
18075         * tramp-ia64.c: Fix some warnings.
18076
18077 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
18078
18079         * mini.h: don't use gboolean for bitfields.
18080         * mini.c: verifier changes for fields and methods accessibility.
18081
18082 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
18083
18084         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
18085         lazy icall wrapper changes.
18086
18087         * dominators.c: Replace all the dominator algorithms with faster
18088         ones from the linear-il branch.
18089
18090         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
18091         the mempool.
18092
18093         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
18094         common cases are done first.
18095
18096         * mini-amd64.c: Fix some warnings.
18097
18098         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
18099         from the mempool.
18100
18101         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
18102         added code.
18103
18104         * mini.h: Add a missing prototype.
18105
18106 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
18107
18108         * mini.c: Compile icall wrappers lazily.
18109
18110         * mini-codegen.c: Use printf instead of g_print since its much faster.
18111
18112         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
18113         function.
18114
18115         * mini.c (optimize_branches): Cache the negative result from 
18116         remove_block_if_useless ().
18117
18118         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
18119         Also fix some bblock linking issues.
18120
18121         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
18122         assembly files.
18123
18124         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
18125
18126         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
18127         accessed fields first, for better cache behavior.
18128         
18129 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
18130
18131         * mini.c: speedup IList<T> array accesses.
18132
18133 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
18134
18135         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
18136         inline_costs counter. Fixes #77190.
18137
18138 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
18139
18140         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
18141         trace messages. Fixes #77706.
18142
18143 2006-03-04  Martin Baulig  <martin@ximian.com>
18144
18145         * tramp-amd64.c, tramp-x86.c
18146         (mono_debugger_create_notification_function): Use
18147         mono_global_codeman_reserve() to allocate a buffer at runtime and
18148         return it.
18149
18150         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
18151
18152         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
18153         notification function at runtime and then call `initialize' in the
18154         `MONO_DEBUGGER__debugger_info' vtable.
18155
18156 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
18157
18158         * iltests.il: Fix a visibility problem.
18159
18160 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18161
18162         * driver.c, mini.c: add hooks for the counters API.
18163
18164 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
18165
18166         * driver.c: show disabled options.
18167
18168 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18169
18170         * linear-scan.c: always use cost-driven selection.
18171
18172 2006-02-28  Raja R Harinath  <rharinath@novell.com>
18173
18174         * jit-icalls.c (helper_compile_generic_method): Revert change from
18175         2006-02-24.
18176
18177 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
18178
18179         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
18180
18181 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
18182
18183         * inssel.brg: style fixes, mostly to force the updated monoburg
18184         to run for people using svn.
18185
18186 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18187
18188         * mini.c: match monoburg changes.
18189
18190 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18191
18192         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
18193         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
18194         declaration in the header file.
18195
18196 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18197
18198         * helpers.c: reduce relocations and mem usage.
18199
18200 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18201
18202         * mini.h, mini-codegen.c: disable logging features if
18203         requested by configure.
18204
18205 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
18206
18207         * mini.c: tiny verifier changes.
18208
18209 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18210
18211         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18212         cpu-pentium.md: stack alignment changes for osx/x86,
18213         partially from Geoff Norton <gnorton@customerdna.com>.
18214
18215 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18216
18217         * jit-icalls.c (helper_compile_generic_method): Update to changes
18218         in metadata/class.c.
18219
18220 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18221         
18222         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18223         
18224         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18225         interface calls with large offsets.
18226
18227 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18228
18229         * jit-icalls.c (helper_compile_generic_method): Document the
18230         special-case we depend on so that we can inflate the method twice
18231         with the same context with no bad side-effects.
18232
18233 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18234
18235         * mini-x86.c, mini-amd64.c: fix for case when xen support
18236         is disabled.
18237
18238 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18239
18240         * mini-x86.c, mini-amd64.c: generate code to access tls items
18241         in a faster way for Xen systems.
18242
18243 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18244
18245         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18246         updates and compilation fixes for the OSX/x86 port, mostly from
18247         Geoff Norton <gnorton@customerdna.com>.
18248
18249 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18250
18251         * inssel.brg: faster interface call implementation
18252         to sync with the interface_offsets MonoVTable changes.
18253
18254 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18255
18256         * mini.c: more verification checks.
18257
18258 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18259
18260         * mini.c: added a few more verification checks.
18261
18262 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18263
18264         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18265         facility on the processor and use it if available.
18266
18267 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18268
18269         * driver.c, aot.c, mini.c: throw exception if the IL code is
18270         invalid or unverifiable.
18271
18272 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18273
18274         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18275         m.StructField.
18276
18277 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18278
18279         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18280
18281 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18282
18283         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18284         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18285         handling of instantiated generic valuetypes.
18286
18287 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18288
18289         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18290         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18291         instead.
18292
18293         * generics.2.cs: Revert the nullable reftypes tests.
18294
18295 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18296
18297         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18298         using __builtin_frame_address (1) as it doesn't work in the presence
18299         of optimizations. Hopefully fixes #77273.
18300
18301         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18302         -> generics.cs change as it doesn't work with some automake versions.
18303
18304 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18305
18306         * mini.c: handle systems that sue a different way to
18307         retrieve the stack address of the current thread.
18308
18309 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18310
18311         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18312         it specially in the makefile.
18313
18314         * generics.2.cs: Add tests for nullable reference types.
18315
18316 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18317
18318         * mini.c: always handle the case when mono_jit_init()
18319         is called in a thread different from the main thread,
18320         confusing libgc (bug #77309).
18321
18322 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18323
18324         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18325
18326 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18327
18328         * mini.c: change optimize_branches () to use a single loop
18329         and introduce a new optimization to simplify some range checks.
18330
18331 2006-02-03  Martin Baulig  <martin@ximian.com>
18332
18333         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18334         and merged with debugger_thread_manager_add_thread().
18335         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18336         inform the debugger about the main thread.
18337
18338 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18339
18340         * basic.cs: Add test for div.un/rem.un constant folding.
18341
18342 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18343
18344         * cpu-s390x.md: correct int_xor_imm length
18345
18346 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18347
18348         * generics.2.cs: New test for #77442.
18349
18350         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18351         #77442.
18352
18353 2006-02-02  Martin Baulig  <martin@ximian.com>
18354
18355         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18356         <mono/metadata/mono-debug-debugger.h>   
18357
18358         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18359
18360 2006-02-02  Martin Baulig  <martin@ximian.com>
18361
18362         * debug-debugger.h: New header file for debug-debugger.c.
18363
18364         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18365         function is a separate thread anymore; add support for attaching.
18366
18367 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18368
18369         * tramp-x86.c: Fix a warning.
18370
18371 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18372
18373         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18374         on very large methods.
18375
18376         * aot.c (load_patch_info): Fix a warning.
18377
18378 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18379
18380         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18381         mini-ops.h: alu membase optimizations.
18382
18383 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18384
18385         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18386         to speedup StringBuilder.
18387
18388 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18389
18390         * dominators.c (mono_compute_natural_loops): Fix detection of
18391         loop body start blocks.
18392
18393         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18394
18395 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18396
18397         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18398         #75145.
18399
18400 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18401
18402         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18403
18404 2006-01-25  Martin Baulig  <martin@ximian.com>
18405
18406         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18407         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18408         started to cleanup this file a little bit.
18409
18410 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18411
18412         * mini.c: optimize a codepath frequently happening in generics code.
18413
18414 2006-01-23  Martin Baulig  <martin@ximian.com>
18415
18416         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18417
18418         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18419         functions directly.
18420
18421         * driver.c: debug-debugger.c is only available if
18422         `MONO_DEBUGGER_SUPPORTED' is defined.   
18423
18424 2006-01-23  Martin Baulig  <martin@ximian.com>
18425
18426         * debug-debugger.c: Only enable this on platforms where the Mono
18427         Debugger is working (x86 and x86_64).
18428
18429 2006-01-21  Martin Baulig  <martin@ximian.com>
18430
18431         The Mono Debugger is now using the normal `mono' instead of the
18432         `mono-debugger-mini-wrapper' when executing managed code.
18433
18434         * debug-debugger.c: New file; previously known as
18435         debugger/wrapper/wrapper.c.
18436
18437         * debug-mini.c (mono_init_debugger): Removed.
18438
18439         * driver.c (mono_main): Added new `--inside-mdb' command line
18440         argument which is used when running inside the debugger.
18441
18442 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18443
18444         * liveness.c (mono_analyze_liveness): Remove some unused data
18445         structures.
18446
18447 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18448
18449         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18450
18451 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18452
18453         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18454         depends on implementation details of monobitset.
18455
18456         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18457         Fixes #77271.
18458
18459 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18460
18461         * liveness.c: Update after monobitset changes.
18462
18463 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18464
18465         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18466
18467 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18468
18469         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18470
18471         * mini-s390x.c: Remove warning messages.
18472
18473 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18474
18475         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18476
18477 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18478
18479         * generics.2.cs: Add ldelem/stelem_any test.
18480
18481 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18482
18483         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18484
18485 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18486
18487         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18488         
18489 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18490
18491         * generics.2.cs: Reenable vtype tests.
18492
18493         * inssel-x86.brg: Remove an icorrect valuetype rule.
18494
18495 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18496
18497         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18498         initial support for OP_ABS.
18499
18500 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18501
18502         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18503
18504 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18505
18506         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18507         conversion and implement LADD/LSUB.
18508
18509         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18510         architectures.
18511
18512 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18513
18514         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18515
18516         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18517         architectures.
18518
18519 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18520
18521         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18522         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18523         (stack walk problem).
18524
18525 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18526
18527         * aot.c (mono_aot_load_method): Fix a warning.
18528
18529 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18530
18531         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18532
18533 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18534
18535         * iltests.il: Add test for #77148.
18536
18537         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18538         #77148.
18539
18540 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18541
18542         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18543
18544 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18545
18546         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18547         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18548
18549         * basic-long.cs: Add lconv-to-r4/r8 tests.
18550
18551 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18552
18553         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18554
18555         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18556         here as on other archs.
18557
18558 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18559
18560         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18561
18562 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18563
18564         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18565         
18566         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18567
18568         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18569         instrument_prolog; Add memory_barrier instruction.
18570
18571 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18572
18573         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18574
18575 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18576
18577         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18578
18579         * aliasing.c inssel.brg: Fix warnings.
18580
18581         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18582         could skip initialization of some parts of memory.
18583
18584         * mini.c mini-ia64.c: Fix warnings.
18585
18586         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18587
18588 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18589
18590         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18591         a crash seen on sparc.
18592
18593         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18594         
18595         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18596
18597 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18598
18599         * mini-ops.h: Add s390_backchain instruction
18600
18601         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18602
18603         * cpu-s390.md: Add s390_backchain instruction
18604
18605         * mini-s390.c: Significant ABI changes
18606
18607         * mini-s390.h: Cater for zero length structures
18608
18609 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18610
18611         * mini-s390.c: ABI fixes
18612
18613         * inssel-s390.brg: Remove debug statements
18614
18615         * cpu-s390.md: Fix length of ATOMIC_xx operations
18616
18617 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18618
18619         * basic-float.cs: Add float<->long conversion tests.
18620
18621 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18622
18623         * mini-s390.c: Fix LOCALLOC processing.
18624
18625         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18626
18627 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18628
18629         * iltests.il: Add tests for some opcodes not covered by the other
18630         tests.
18631
18632 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18633
18634         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18635         register loading for Tail processing; Correct trace output.
18636
18637         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18638
18639         * cpu-s390.md: Correct size of jmp instruction. 
18640
18641 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18642
18643         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18644
18645 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18646
18647         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18648           Bring s390 up to current level.
18649
18650 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18651
18652         * generics.2.cs: Disable the newly added tests as they do not work yet.
18653         
18654         * generics.2.cs: Add valuetype tests.
18655
18656 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18657
18658         * basic-long.cs: Add i4->u8 test.
18659
18660         * objects.cs: Add tests for JIT intrinsic.
18661
18662         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18663         optimizations lost by a mistake.
18664
18665 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18666
18667         * basic-long.cs: Remove a test moved to objects.cs.
18668
18669         * arrays.cs: Add more array tests.
18670
18671 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18672
18673         * arrays.cs: Add new tests for multi-dimensional arrays.
18674
18675 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18676
18677         * Makefile.am (test_sources2): Add generics.2.cs.
18678         (EXTRA_DIST): Add test_sources2.
18679
18680 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18681
18682         Support for boxing and unboxing nullable types as well as the
18683         isinst operation on nullables, per the CLI ammendment.
18684
18685         * inssel.brg (CEE_ISINST): Special case for nullable
18686
18687         * mini.c (handle_unbox_nullable): new method
18688         (handle_box): Special case for nullable types
18689         (mono_method_to_ir): Call handle_unbox_nullable in correct
18690         places.
18691
18692         * generics.2.cs: New test suite
18693
18694         * Makefile.am: Support for regression tests with generics.
18695
18696 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18697
18698         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18699         allocated to registers. Fixes #76800.
18700
18701 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18702
18703         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18704
18705 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18706
18707         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18708         of platforms.
18709
18710 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18711
18712         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18713         objects.cs.
18714
18715         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18716         
18717         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18718 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18719
18720         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18721         single precision before storing to a single precision location.
18722
18723 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18724
18725         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18726
18727 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18728
18729         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18730         correct files.
18731
18732         * basic.cs: Remove test_0_byte_compares test which was moved to
18733         objects.cs a long time ago.
18734
18735 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18736
18737         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18738
18739 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18740
18741         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18742         handlers are called.
18743
18744         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18745         throwing code.
18746
18747          * mini-ia64.c: Add support for the throw->branch exception 
18748         optimization.   
18749
18750         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18751
18752 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18753
18754         * mini.c: Enabled "fastpath" deadce :-)
18755         
18756 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18757
18758         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18759         alias analysis pass to support it.
18760         * mini.h: Likewise.
18761         * ssa.c: Likewise.
18762         * liveness.c: Likewise (liveness computation can use aliasing
18763         information to be more accurate).
18764         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18765         moreover made so that "--compile-all" uses the given optimization
18766         flags and not the default ones.
18767         * aliasing.c: Alias analysis (new file).
18768         * aliasing.h: Likewise.
18769         * Makefile.am: added "aliasing.c" and "aliasing.h".
18770         
18771 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18772
18773         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18774         OP_L opcodes.
18775
18776 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18777
18778         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18779         fp >= end_of_stack exit condition, as it is not needed, and it might
18780         become true for fp eliminated frames.
18781
18782 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18783
18784         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18785         coded offsets.
18786
18787 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18788
18789         * mini-arm.c: fixed alignment of doubles/longs to match
18790         the C ABI (bug #76635).
18791
18792 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18793
18794         * aot.c: fix compilation with --enable-minimal=aot.
18795
18796 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18797
18798         * mini-arm.c: fixed compatibility with the new
18799         floating point emulator package for compares.
18800
18801 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18802
18803         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18804
18805 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18806
18807         * mini-exceptions.c (print_stack_frame): Output to stderr.
18808         (mono_handle_native_sigsegv): Ditto.
18809
18810 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18811
18812         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18813         OP_LCONV_TO_OVF_I implementation.
18814
18815         * mini-amd64.c: Add support for the throw->branch exception 
18816         optimization.
18817
18818         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18819         when the catch clause catches a more general exception, i.e. Object.
18820
18821 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18822
18823         * cpu-ia64.md: Remove unused opcodes.
18824
18825         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18826         specific defines for architectures defining USE_SIGACTION.
18827
18828         * mini-ia64.c: Fix some warnings.
18829
18830         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18831         version seemed to skip a frame.
18832
18833 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18834
18835         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18836         only calls which are made to native code use this flag.
18837
18838 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18839
18840         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18841         varargs methods as well.
18842         
18843         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18844         which have save_lmf set. Reorganize methods prologs a bit.
18845
18846         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18847         debugger to the proper place.
18848
18849 2005-10-29  Martin Baulig  <martin@ximian.com>
18850
18851         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18852         when running inside the debugger until the debugger has support
18853         for it.
18854
18855 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18856
18857         * mini.h: Fix a warning.
18858
18859 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18860
18861         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18862         we expose publicly, this returns the string.
18863
18864 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18865
18866         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18867         with fp elimination.
18868
18869 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18870
18871         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18872         native stacktrace using the glibc 'backtrace' function if available.
18873
18874 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18875
18876         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18877
18878         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18879         handle SIGSEGVs received while in native code.
18880
18881         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18882         code, call mono_handle_native_sigsegv which will abort the runtime
18883         after printing some diagnostics, instead of converting it into a
18884         confusing NullReferenceException.
18885
18886 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18887
18888         * cpu-pentium.md: Remove unused opcodes.
18889
18890 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18891
18892         * mini-amd64.h (MonoLMF): Add rsp field.
18893
18894         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18895         the lmf too.
18896
18897 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18898
18899         * mini-codegen.c (get_register_spilling): Fix some warnings.
18900
18901 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18902
18903         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18904         elimination during exception handling. Enable fp elimination by
18905         default.
18906
18907         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18908         elimination.
18909
18910 2005-10-16  Martin Baulig  <martin@ximian.com>
18911
18912         * mini-exceptions.c
18913         (mono_debugger_run_finally): New public method for the debugger.
18914
18915 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18916
18917         * debug-mini.c (mono_debug_init_method): Fix warning.
18918
18919         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18920         the 'exname' parameter const to fix some warnings.
18921
18922 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18923
18924         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18925         introduced by the previous patch.
18926
18927 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18928
18929         * basic-float.cs: Add test for precision of float arithmetic.
18930
18931         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18932         when loading/storing single values from/to memory.
18933
18934         * mini.c (mono_jit_compile_method_with_opt): Create the function
18935         pointers in the correct domain.
18936
18937 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18938
18939         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18940         introduced by previous patch.
18941         
18942         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18943         when out_filter_idx is NULL.
18944
18945         * mini-exceptions.c: Don't run filter clauses twice during exception
18946         handling. Fixes #75755.
18947
18948 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18949
18950         * aot.c: Add support for ldflda wrappers.
18951
18952         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18953         #75902.
18954
18955 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18956
18957         * mini.c, mini.h: do not consider exception handlers blocks when
18958         setting up interface variables.
18959
18960 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18961
18962         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18963
18964 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18965
18966         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18967         causes a regression.
18968
18969         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18970
18971 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18972
18973         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18974         of the OP_P definitions.
18975
18976         * TODO: Add a proposal for dealing with the CEE/OP mess.
18977
18978         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18979         optimizations from the x86 port.
18980
18981         * cpu-amd64.md: Ditto.
18982
18983         * basic.cs basic-long.cs: Add tests.
18984
18985 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18986
18987         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18988         Patrik Torstensson's implementation of my exception-handling
18989         optimization idea, when the exception object is not used
18990         (bug #62150).
18991
18992 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18993
18994         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18995         of the mul_imm optimizations from the old jit.
18996
18997 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18998
18999         * mini.c, liveness.c: patch by Patrik Torstensson and
19000         Zoltan Varga to improve performance in methods with
19001         exception clauses.
19002
19003 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
19004
19005         * driver.c: Remove 'Globalization' entry from --version.
19006
19007 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
19008
19009         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
19010         there is a profiler interested in JIT events.
19011
19012         * aot.c: Load profile files produced by the AOT profiling module, and
19013         reorder methods based on the profiling info. Add a 'method_order' table
19014         to the AOT file to make mono_aot_find_jit_info work with the reordered
19015         methods.
19016
19017         * mini.h: Bump AOT file version info.
19018
19019 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
19020
19021         * mini-arm.h: work around what looks like a gcc bug when optimizations
19022         are enabled.
19023
19024 2005-09-28  Raja R Harinath  <rharinath@novell.com>
19025
19026         * Makefile.am (AM_CFLAGS): Don't use += to append inside
19027         conditionals.  Use ...
19028         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
19029
19030 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
19031
19032         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
19033         to determine the amount of memory to copy when passing valuetypes.
19034
19035         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
19036         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
19037
19038 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
19039
19040         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
19041         information about aot.
19042
19043 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
19044
19045         * *.c: Replace the use of {Enter,Leave}CriticalSection with
19046         macros. This will allow a deadlock debugger to easily be plugged
19047         in.
19048
19049 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
19050
19051         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
19052
19053 2005-09-27  Raja R Harinath  <rharinath@novell.com>
19054
19055         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
19056         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
19057         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
19058         ($(arch_built)) [CROSS_COMPILING]: Error out.
19059
19060 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
19061
19062         * aot.c: Add support for the no_special_static flag for classes.
19063
19064 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
19065
19066         * Reapply reverted patches.
19067
19068         * *: Revert r50174 as well.
19069
19070         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
19071
19072 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
19073
19074         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
19075
19076 2005-09-23  Miguel de Icaza  <miguel@novell.com>
19077
19078         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
19079         part of the SIG_HANDLER_SIGNATURE.  
19080
19081 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
19082
19083         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
19084         statistics.
19085
19086         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
19087         introduced by previous patch.
19088
19089 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
19090
19091         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
19092         saved registers too.
19093
19094         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
19095         upon the information returned by get_call_info ().
19096         
19097         * mini-x86.c (add_float): Fix stack size calculation.
19098         (mono_arch_call_opcode): Rewrite this so it works based up the
19099         information returned by get_call_info ().
19100         (mono_arch_get_this_vret_args): Ditto.
19101
19102 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
19103
19104         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
19105         in cinfo to determine the registers which need to be used.
19106
19107 2005-09-20  Miguel de Icaza  <miguel@novell.com>
19108
19109         * driver.c (mono_main): Add --server and --desktop flags. 
19110
19111 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
19112
19113         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
19114         registers as global registers.
19115
19116         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
19117         longer needed with the new register allocator.
19118
19119         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
19120
19121         * cpu-ia64.md: Remove unused opcodes.
19122         
19123         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
19124         
19125 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
19126
19127         * cpu-amd64.md: Remove unused opcodes.
19128
19129         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
19130         needed with the new register allocator.
19131
19132         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
19133         reg-reg moves.
19134
19135 2005-09-16  Raja R Harinath  <rharinath@novell.com>
19136
19137         * Makefile.am (check-local): Don't invoke semdel-wrapper.
19138
19139 2005-09-16  Martin Baulig  <martin@ximian.com>
19140
19141         * exceptions-amd64.c
19142         (throw_exception): Don't call mono_debugger_throw_exception() if
19143         we're a rethrow - see the FIXME in the code.
19144
19145 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
19146
19147         * mini.c (mono_init_exceptions): This only works on some architectures.
19148         
19149 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19150
19151         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
19152         on ia64.
19153
19154         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
19155
19156         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
19157         now in mini-exceptions.c.
19158
19159 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
19160
19161         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
19162         now in mini-exceptions.c.
19163
19164 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19165
19166         * exceptions-x86.c: Applied patch from Patrik Torstensson 
19167         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
19168
19169         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
19170         code into mini-exceptions.c. Add some assertions to it.
19171
19172 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
19173
19174         * aot.c (emit_section_change): Applied patch from "The Software Team" 
19175         (<software@solmersa.com>). Fix as errors on windows.
19176
19177 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19178
19179         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
19180         method info into the LMF.
19181
19182 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19183         
19184         * mini-ia64.c: Add proper unwind info for method epilogs.
19185
19186         * exceptions-ia64.c: Add some code to help debugging.
19187         
19188         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
19189
19190         * mini-exceptions.c: Fix warning.
19191
19192 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19193
19194         * mini.c: Really fix build.
19195
19196         * mini-x86.c mini-amd64.c: Fix build.
19197
19198 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19199
19200         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
19201
19202         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
19203         some Interlocked methods as intrinsics.
19204
19205         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
19206         for Thread methods as well.
19207
19208         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19209
19210         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19211
19212         * mini-ia64.c mini-x86.c mini-amd64.c 
19213         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19214         OP_MEMORY_BARRIER.
19215         
19216         * mini.c (mono_init_exceptions): Fix build breakage.
19217
19218 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19219
19220         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19221         of instructions. Use the new ia64_unw_op macros for emitting unwind
19222         info.
19223
19224         * mini.c (mono_init_exceptions): Initialize exception handling
19225         related trampolines at startup.
19226
19227 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19228
19229         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19230
19231 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19232
19233         * mini.c: Handle type loading errors gracefully during compilation and
19234         throw the appropriate exception.
19235
19236 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19237
19238         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19239         for the mono binary.
19240
19241 2005-09-09  Martin Baulig  <martin@ximian.com>
19242
19243         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19244         the release.
19245
19246 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19247
19248         * mini-arm.h: use emulation for conv.r.un for the release.
19249
19250 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19251
19252         * mini-arm.c, objects.cs: more fixes and tests for them.
19253
19254 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19255
19256         * mini-arm.c: align structures to at least 4 bytes to be able
19257         to keep our current optimized memcpy.
19258
19259 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19260
19261         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19262
19263 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19264
19265         * mini.c: ignore SIGPIPE.
19266
19267 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19268
19269         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19270
19271         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19272
19273 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19274
19275         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19276
19277 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19278
19279         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19280         exception handling support.
19281         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19282         patch by Brian Koropoff <briank@marakicorp.com>).
19283
19284 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19285
19286         * mini.c: revert another 'optimization' which breaks when
19287         items on the eval stack need to be saved at a basic block end
19288         (bug #75940).
19289
19290 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19291
19292         * jit-icalls.c: for arrays, ensure we always provide
19293         lower bounds.
19294
19295 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19296
19297         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19298         
19299         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19300
19301 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19302
19303         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19304         arguments in their original register.
19305
19306 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19307
19308         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19309         memset/memcpy.
19310
19311         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19312         when ssapre is enabled.
19313
19314         * inssel-long.brg: Fix bug in previous patch.
19315
19316         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19317         multiplication by a constant.
19318
19319 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19320
19321         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19322         icc.
19323
19324         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19325         saving registers.
19326
19327 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19328
19329         * inssel-arm.brg: apply changes tested by Brian Koropoff
19330         <briank@marakicorp.com>.
19331
19332 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19333
19334         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19335         
19336 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19337
19338         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19339         to the same register if dreg is just a base register.
19340         (print_ins): Improve printing of membase opcodes.
19341
19342         * inssel-x86.brg: Add optimized ldind(reg) rules.
19343
19344         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19345
19346 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19347
19348         * mini.c: when running under valgrind, set the stack bottom for
19349         the GC at the actual approximate stack for the app (fixes running
19350         mono with valgrind).
19351
19352 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19353
19354         * mini.c: do no break at the first valuetype to init found
19355         (fixes bug #75791).
19356
19357 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19358
19359         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19360
19361 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19362
19363         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19364
19365 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19366
19367         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19368
19369 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19370
19371         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19372
19373         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19374         code.
19375
19376         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19377         code.
19378
19379         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19380         methods.
19381
19382 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19383
19384         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19385
19386 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19387
19388         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19389         in the tail recursion optimization.
19390
19391         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19392         debug info into the assembly file.
19393
19394         * iltests.il: Add test for filter regions.
19395
19396         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19397         initial stack of filter regions. Fixes #75755.
19398
19399 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19400
19401         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19402         stack requirements.
19403
19404 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19405
19406         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19407         the check for an already compiled method on non-ia64 platforms.
19408         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19409         proper domain.
19410
19411         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19412
19413         * inssel-x86.brg: Add some optimized call rules.
19414
19415 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19416
19417         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19418         method here.
19419
19420         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19421         mono_arch_patch_delegate_trampoline.
19422
19423         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19424
19425         * mini-trampolines.c: Fix build.
19426
19427         * mini-amd64.h: Add delegate trampolines.
19428
19429         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19430
19431         * inssel-amd64.brg: Add optimized call rules.
19432         
19433         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19434
19435         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19436
19437 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19438
19439         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19440         change.
19441
19442         * mini-ia64.c: Remove LMF fixmes.
19443
19444         * mini-ia64.h: Remove most fields from LMF.
19445
19446         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19447
19448         * mini-trampolines.c: Add support for IA64 function descriptors.
19449
19450         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19451         for IA64 function descriptors.
19452
19453 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19454
19455         * tramp-arm.c: patch the vtable for virtual calls. Added
19456         support code to register/unregister the LMF.
19457         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19458         more LMF work.
19459
19460 2005-08-19  Dick Porter  <dick@ximian.com>
19461
19462         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19463         bit value if needed.
19464
19465 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19466
19467         * mini.c (mini_get_method): Move handling of wrapper data here.
19468
19469         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19470
19471         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19472         virtual.
19473
19474         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19475         bblock->code does not remain empty.
19476
19477 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19478
19479         * arrays.cs: Add regression test for #75832.
19480
19481         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19482         rules. Fixes #75832.
19483
19484         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19485         instruction scheduling.
19486
19487 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19488
19489         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19490
19491 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19492
19493         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19494
19495         * mini-codegen.c: Fix VC build.
19496
19497         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19498
19499 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19500
19501         * mini.h: fix signature for mono_register_opcode_emulation.
19502
19503 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19504
19505         * mini.c: Get rid of most of the helper_sig_... constants using
19506         mono_create_icall_signature ().
19507
19508 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19509
19510         * jit-icalls.c (helper_ldstr): New helper function.
19511
19512         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19513
19514         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19515         throw, load the string using a helper call instead of creating a string object.
19516
19517         * aot.c: Update after LDSTR changes.
19518
19519         * mini.h: Bump AOT file version.
19520         
19521         * aot.c: Save class size info into the AOT file. Print more statistics during
19522         compilation.
19523
19524         * mini.h: Bump AOT file version.
19525
19526         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19527         ordering of disasm cases. Fixes #74957.
19528
19529 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19530
19531         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19532         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19533         the generic code needed for the ARM port.
19534
19535 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19536
19537         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19538         inssel-arm.brg: more ARM features and fixes.
19539
19540 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19541
19542         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19543         ARM port work in progress.
19544
19545 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19546
19547         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19548
19549         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19550
19551         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19552
19553         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19554
19555         * *-ia64.*: Ongoing IA64 work.
19556         
19557         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19558
19559 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19560
19561         * TODO: Remove out-of-data todo stuff.
19562
19563         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19564         dead code.
19565
19566         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19567
19568         * mini.h: Bump corlib version.
19569
19570 2005-07-27  Martin Baulig  <martin@ximian.com>
19571
19572         * mini-codegen.c
19573         (create_copy_ins): Added `const unsigned char *ip' argument; set
19574         `copy->cil_code' from it.
19575
19576 2005-07-27  Martin Baulig  <martin@ximian.com>
19577
19578         * mini-exceptions.c (mono_handle_exception): Don't call
19579         mono_debugger_handle_exception() for filters.
19580
19581 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19582
19583         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19584         as well.
19585
19586 2005-07-26  Martin Baulig  <martin@ximian.com>
19587
19588         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19589
19590         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19591         helper_compile_generic_method() if the method is actually virtual
19592         and non-final.
19593
19594 2005-07-26  Martin Baulig  <martin@ximian.com>
19595
19596         * mini.c
19597         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19598         public; this is now accessed directly by the debugger.
19599         (mono_generic_trampoline_code): Removed.
19600
19601         * debug-mini.c
19602         (mono_debug_init_method): Also add interncalls and wrappers.
19603
19604 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19605
19606         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19607
19608 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19609
19610         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19611
19612 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19613
19614         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19615
19616 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19617
19618         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19619         getting TLS offsets on AMD64 too.
19620
19621 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19622
19623         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19624
19625 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19626
19627         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19628         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19629
19630 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19631
19632         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19633
19634         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19635         to mini.c.
19636
19637         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19638         mono_sparc_is_virtual_call ().
19639         
19640         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19641
19642         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19643         trampoline parameters.
19644
19645         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19646         
19647         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19648         to mono_arch_get_vcall_slot_addr.
19649
19650         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19651         trampoline code.
19652
19653         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19654
19655 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19656
19657         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19658
19659 2005-07-19  Martin Baulig  <martin@ximian.com>
19660
19661         * exceptions-amd64.c (throw_exception): Call
19662         mono_debugger_throw_exception() here like we're doing it on i386.
19663
19664 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19665
19666         * mini-ia64.c: Add optimized TLS access support.
19667
19668 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19669
19670         * mini-exceptions.c: Ongoing IA64 work.
19671
19672         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19673
19674         * mini.c: Use the default optimization set when embedding. Fixes
19675         #75194.
19676
19677 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19678
19679         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19680         of trampolines to a separate file.
19681
19682         * mini-trampolines.c: New file.
19683
19684         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19685         separate file.
19686         
19687         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19688         amd64/ia64 code.
19689
19690         * mini-codegen.c: Fix cygwin build.
19691
19692 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19693
19694         * mini.c: Add some minor changes needed by the IA64 port.
19695
19696         * *-ia64.*: Ongoing IA64 work.
19697
19698 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19699
19700         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19701         trampolines into arch-independent and arch-dependent parts.
19702
19703         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19704
19705 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19706
19707         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19708
19709         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19710         the xp-regalloc-branch for amd64.
19711
19712         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19713         xp-regalloc-branch for x86.
19714
19715 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19716
19717         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19718
19719 2005-07-06  Martin Baulig  <martin@ximian.com>
19720
19721         * mini.c
19722         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19723         (mono_jit_runtime_invoke): Likewise.
19724
19725 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19726
19727         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19728         on x86 too.
19729         
19730         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19731         without loading their metadata. Reorganize the file format so exception handling+
19732         debug info is kept separate from normal method info. Create MonoJitInfo 
19733         structures for methods lazily.
19734
19735         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19736         loading metadata.
19737         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19738
19739         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19740
19741         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19742         in AOT code.
19743
19744         * mini.h: Bump AOT file version.
19745
19746 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19747
19748         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19749
19750 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19751
19752         * Makefile.am (check-local): Call semdel-wrapper.
19753
19754 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19755
19756         * mini-x86.c: Revert the last change as it seems to break the build..
19757
19758 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19759
19760         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19761         
19762         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19763
19764 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19765
19766         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19767         outside of the macro, so strange stuff doesn't happen with gcc4
19768         (NEW_AOTCONST_TOKEN): Likewise.
19769
19770 2005-06-28  Martin Baulig  <martin@ximian.com>
19771
19772         * mini.c (mini_class_is_system_array): New static method; use this
19773         instead of `klass->parent == mono_defaults.array_class' everywhere
19774         since this also works for the new generic array class.
19775
19776 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19777
19778         * inssel.brg: Remove warnings.
19779
19780 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19781
19782         * mini-ia64.c: Ongoing IA64 work.
19783
19784         * basic-float.cs: Add float->i1 conversion test.
19785
19786         * iltests.il: Add conv.u4 test.
19787
19788 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19789
19790         * inssel-long.brg: Fix bug caused by last change.
19791
19792 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19793
19794         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19795         BSDs.  Allows the x86 JIT to work on OSX86
19796
19797 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19798
19799         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19800         u4->i8 conversion.
19801
19802         * mini-ia64.c: Ongoing IA64 work.
19803
19804 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19805
19806         * mini-ia64.c: Ongoing IA64 work.
19807
19808         * driver.c: Clean up jit_code_hash as well when using --regression.
19809
19810         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19811
19812         * basic-long.cs: Add tests for long->u4 conversion.
19813
19814 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19815
19816         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19817         that we do not depend on undefined C behavior: the order stuff
19818         gets evaluated within an expression. Fixes mono when compiled on
19819         GCC 4.
19820
19821 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19822
19823         * *-ia64.*: Ongoing IA64 work.
19824
19825         * aot.c: Lower memory usage while loading AOT methods.
19826
19827         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19828
19829         * mini.h: Bump AOT file format version.
19830
19831 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19832
19833         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19834
19835 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19836
19837         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19838         not on callee assembly). Fixed some comments.
19839
19840 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19841
19842         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19843         it gets proper disassembly.
19844         (emit_method_info): Remove some dead code.
19845
19846         * mini.c (mini_method_compile): Allways allocate the GOT var in
19847         mono_method_to_ir for emulating opcodes.
19848
19849 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19850
19851         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19852         before freeing the code memory. Fixes #74990.
19853
19854         * objects.cs: Add regression test for #74992.
19855
19856         * liveness.c: Extend live ranges of arguments to the beginning of the
19857         method. Fixes #74992.
19858
19859         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19860         so it points into the faulting instruction.
19861
19862 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19863
19864         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19865
19866         * *-ia64.*: Ongoing IA64 work.
19867
19868         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19869
19870 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19871
19872         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19873
19874         * *-ia64.*: Ongoing IA64 work.
19875
19876 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19877
19878         * basic-long.cs: Add tests for add/sub.ovf.
19879
19880         * basic.cs: Add tests for sub.ovf.
19881
19882         * *-ia64.*: Ongoing IA64 work.
19883
19884 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19885
19886         * *-ia64.*: Ongoing IA64 work.
19887
19888         * basic.cs: Add conv.ovf.i4.un test.
19889
19890 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19891
19892         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19893         
19894 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19895
19896         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19897
19898 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19899
19900         * *-ia64.*: Ongoing IA64 work.
19901
19902 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19903
19904         * trace.[ch]:
19905         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19906
19907 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19908
19909         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19910
19911 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19912
19913         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19914
19915         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19916         of a call is callable by a near call.
19917
19918 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19919
19920         * mini-ia64.c: Ongoing IA64 work.
19921
19922 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19923
19924         * genmdesc.c: Make the generated array non-static.
19925
19926         * inssel-long.brg: Fix LSHR_IMM rule.
19927
19928         * *-ia64.*: Ongoing IA64 work.
19929
19930         * *-ia64.*: Ongoing IA64 work.
19931
19932 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19933
19934         * *-ia64.*: Ongoing IA64 work.
19935
19936         * *-ia64.*: Ongoing IA64 work.
19937         
19938         * mini-ia64.c: Ongoing IA64 work.
19939
19940         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19941
19942 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19943
19944         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19945         
19946         * objects.cs basic-long.cs: Move some tests to objects.cs.
19947
19948 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19949
19950         * *-ia64.*: Ongoing IA64 work.
19951
19952         * iltests.il: Add a new test.
19953
19954         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19955         newobj. Fixes #75042.
19956
19957 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19958
19959         * *-ia64.*: Ongoing IA64 work.
19960         
19961         * *-ia64.*: Ongoing IA64 work.
19962         
19963         * *-ia64.*: Ongoing IA64 work.
19964
19965         * basic.cs objects.cs: Move tests accessing static variables as well.
19966
19967         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19968
19969 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19970
19971         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19972
19973         * driver.c: Always print failed tests.
19974
19975         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19976         frame pointer.
19977
19978         * *ia64*: Ongoing IA64 work.
19979
19980 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19981
19982         * basic.cs: Add tests for add.ovf. Fix warnings.
19983
19984 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19985
19986         * driver.c (mono_main): Avoid crash if no argument is passed to
19987         --break;  Do not use g_error, but f_printf.   And fix all other
19988         ocurrences of the same crash.
19989
19990 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19991
19992         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19993         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19994         Fixes #74742.
19995
19996 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19997
19998         * *-ia64.*: Add beginnings of IA64 backend.
19999
20000         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
20001
20002 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
20003
20004         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
20005         Fixes #74925.
20006
20007         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
20008
20009         * mini-amd64.c: Fix a warning.
20010
20011 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
20012
20013         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
20014         in float_neg. Fixes #74897.
20015
20016         * mini-amd64.c (emit_call): Fix another near call bug.
20017
20018 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
20019
20020         * declsec.c: Keep the appdomain information in the structure. Added a 
20021         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
20022         value gets overwritten).
20023         * declsec.h: Set the default MonoArray for the the stack to 6. Added
20024         an MonoAppDomain member to MonoSecurityFrame.
20025         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
20026         used in the stack walk. Now use a MonoArray which grow (double) when
20027         it gets full.
20028
20029 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
20030
20031         * mini.c: Re-enabled runtime cleanup, since running threads should
20032         now properly stop when exiting.
20033
20034 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
20035
20036         * mini-codegen.c: New file contaning the arch-independent local
20037         register allocator. Not used by any architectures yet.
20038
20039         * mini.h linear-scan.c: Merge some changes from the 
20040         mini-xp-local-regalloc branch.
20041
20042 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
20043
20044         * mini-amd64.c (emit_call): Fix calls to native functions when the
20045         runtime is compiled as a shared library. Fixes #74756.
20046
20047         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
20048         on a literal field. Fixes #74751.
20049
20050 2005-04-25  Raja R Harinath  <rharinath@novell.com>
20051
20052         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
20053
20054 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
20055
20056         * objects.cs: Add missing null casting test.
20057
20058 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
20059
20060         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
20061         in wrapper methods. Also rename 'address' variable to 'offset'.
20062
20063 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
20064
20065         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
20066         warnings.
20067         
20068         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
20069
20070         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
20071         work on windows.
20072
20073 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
20074
20075         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
20076
20077 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
20078
20079         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
20080         just the last bytes.
20081
20082 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
20083
20084         * aot.c (mono_compile_assembly): Fix warning.
20085
20086         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
20087         by the _MSC_VER stuff.
20088
20089 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
20090
20091         * inssel-long.brg: Fix #74588.
20092
20093         * cpu-amd64.md: Fix #74591.
20094
20095         * iltests.il: Add new regression tests.
20096
20097 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
20098
20099         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
20100         valuetype.
20101
20102 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
20103
20104         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
20105
20106         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
20107         from Bill Middleton <flashdict@gmail.com>.
20108
20109 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
20110
20111         * arrays.cs: Add new regression test. Fix warnings.
20112
20113 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
20114
20115         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
20116         and leakage in CKFINITE.
20117
20118         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
20119         this to a null op since it is called on amd64 too.
20120
20121         * exceptions-amd64.c (get_throw_trampoline): Align stack.
20122
20123         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
20124         body since this is not used on amd64.
20125         
20126         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
20127
20128         * mini-amd64.c: Remove obsolete fixmes.
20129
20130         * mini.c (print_method_from_ip): Fix debugging support.
20131
20132 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20133
20134         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
20135         so that expressions that don't give much gain are not reduced.
20136         * ssapre.h: Likewise.
20137
20138 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
20139
20140         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
20141
20142         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
20143
20144         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
20145
20146 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
20147
20148         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
20149
20150         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
20151
20152 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
20153
20154         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
20155         stack touching.
20156
20157         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
20158
20159         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
20160
20161         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
20162
20163         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
20164         MONO_ARCH_USE_SIGACTION. Fixes #74252.
20165
20166         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
20167
20168         * mini-x86.c: Fix up stack overflow handling.   
20169
20170         * exceptions.cs: Add new regression test.
20171
20172 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
20173
20174         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
20175         mono_jit_thread_attach.
20176
20177         * mini.c (mono_method_to_ir): Verify called method is not abstract.
20178
20179 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20180
20181         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
20182         avoid calling constructors using callvirt.
20183
20184         * inssel.brg: Fix #74073.
20185
20186 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
20187
20188         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
20189         compilation with non-GCC compilers.
20190         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
20191         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
20192
20193 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
20194
20195         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
20196         klass->interface_offsets (will likely fix bug#74073).
20197
20198 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20199
20200         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
20201
20202 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
20203
20204         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
20205         to amd64_div_reg_size ().
20206         
20207         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
20208
20209 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20210
20211         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20212
20213 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20214
20215         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20216
20217 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20218
20219         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20220         
20221         * mini.c (mono_precompile_assembly): Load and precompile referenced
20222         assemblies as well. Fixes #74015.
20223
20224 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20225
20226         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20227
20228 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20229
20230         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20231         a lot of checks and (anyway) permissions cannot work until corlib is 
20232         loaded.
20233
20234 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20235
20236         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20237
20238 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20239
20240         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20241         calls (fixes bug#72824).
20242
20243 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20244
20245         * mini.c: fix tail recursion elimination (see test in bug#73936).
20246
20247 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20248
20249         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20250         some fp functions in sse2 mode.
20251
20252 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20253
20254         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20255
20256 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20257
20258         * mini.h mini.c: Add mono_get_jit_tls_key ().
20259
20260         * mini-x86.c: Enable fast TLS support on windows.
20261
20262 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20263
20264         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20265         * mini.c: Check for p/invoke method when generating code. If a
20266         p/invoke method, or it's class, isn't decorated with [Suppress
20267         UnmanagedCodeSecurity] then generate code to call System.Security.
20268         UnmanagedDemand (only if the security manager is active).
20269
20270 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20271
20272         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20273         last change as it seems to cause strange crashes.
20274         
20275 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20276
20277         * *.c: handle unsafe function pointers where needed.
20278
20279 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20280
20281         * mini.c (mono_jit_free_method): Remove the fixme too.
20282
20283 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20284
20285         * mini.c: As discussed, make the code actually free the delegate
20286         thunk now, to enable the debugging of delegate problems, use
20287         MONO_DEBUG=1 when running Mono. 
20288
20289         This takes also care of parts of the leaks as seen by Joe.
20290
20291 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20292
20293         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20294         thread_tls_offset calculation.
20295
20296 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20297
20298         * declsec.c: Reworked linkdemand checks for icall. The previous code
20299         was using the declaration code (untrusted) and didn't work as expected
20300         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20301         specific case.
20302
20303 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20304
20305         * iltests.il: Add new localloc test.
20306
20307         * mini-amd64.c: Handle large stack allocations the same way as on
20308         windows if stack overflow handling is working.
20309         
20310         * mini-amd64.c: Allocate the signal stack using mmap.
20311
20312         * mini.c (sigsegv_signal_handler): Fix reading of context.
20313
20314         * mini-exceptions.c: Fix up stack overflow handling.
20315
20316         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20317
20318         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20319
20320         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20321
20322         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20323
20324         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20325         tramp_init functions as they are no longer needed.
20326
20327 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20328
20329         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20330         
20331         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20332
20333         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20334         
20335         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20336         support that now.
20337
20338         * mini-ops.h: Add OP_LMUL_IMM.
20339
20340         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20341         long mul/div opcodes as intrinsic.
20342
20343         * mini-amd64.c (emit_call): Handle the case when the callee might be
20344         an AOT method.
20345
20346 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20347
20348         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20349         extra safe.
20350         
20351         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20352
20353         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20354
20355 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20356
20357         * mini.c (mono_codegen): Don't leak here, to help people running
20358         monogrind.
20359
20360 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20361
20362         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20363         conversions in sse2 mode.
20364
20365         * basic-float.cs: Add regression test.
20366         
20367         * mini-amd64.c: Reenable sse2.
20368
20369 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20370
20371         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20372
20373 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20374
20375         * driver.c: Copyright text should include 2005.
20376         
20377 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20378
20379         * cpu-amd64.md (load_membase): Fix more max lengths.
20380
20381 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20382
20383         * cpu-amd64.md (load_membase): Fix max length.
20384
20385         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20386
20387         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20388
20389         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20390         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20391
20392         * basic-float.cs: Add rounding regression test.
20393
20394         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20395
20396 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20397
20398         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20399         structures in registers for pinvoke wrappers.
20400
20401 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20402
20403         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20404
20405 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20406
20407         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20408         wrapper to mono_jit_thread_attach.
20409
20410         * mini.c (mini_jit_thread_attach): New jit icall.
20411
20412         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20413         native->managed wrappers.
20414
20415         * exceptions.cs: Add new regression test.
20416
20417         * mini.c (optimize_branches): Check regions in the cbranch to throw
20418         block case as well. Fixes #73242.
20419
20420 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20421
20422         * mini.c: thread safety fixes.
20423
20424 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20425
20426         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20427         patching stuff, since delegates use jump trampolines so there is
20428         no caller.
20429
20430         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20431         jump trampolines.
20432         
20433         * tramp-amd64.c: Fix build.
20434
20435         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20436         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20437
20438         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20439         Rename this to mono_arch....
20440         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20441
20442         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20443
20444         * mini-amd64.c (emit_call): If both the caller and the callee is
20445         guaranteed to have 32 bit addresses, emit a normal call.
20446
20447         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20448
20449         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20450         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20451         method_ptr inside delegates.
20452
20453 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20454
20455         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20456         invalidated. Fixes #73001.
20457
20458         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20459
20460         * mini-x86.c: Only use stdcall for pinvokes on windows.
20461
20462 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20463
20464         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20465         * mini-x86.c: remove unreliable __thread var offset detection,
20466         use the correct accessors and enable by default.
20467
20468 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20469
20470         * mini.c (mono_jit_free_method): Fix memory leak.
20471
20472 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20473
20474         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20475
20476 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20477
20478         * cpu-amd64.md: Fix lengths of atomic opcodes.
20479
20480 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20481
20482         * driver.c: try to not imply using ICU is any good.
20483
20484 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20485
20486         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20487         functions as inline ops.
20488
20489         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20490         some Interlocked functions as inline ops.
20491
20492         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20493
20494         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20495
20496         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20497
20498         * mini.c: Add support for OP_NOT_TAKEN.
20499
20500         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20501         structures in registers for pinvoke wrappers.
20502
20503         * mini-amd64.c: Fix warnings.
20504
20505 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20506
20507         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20508
20509         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20510
20511         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20512         address instead of loading the address from it.
20513
20514         * mini-x86.c: Add support for returning small structs in registers
20515         on Win32. Fixes part of #70864.
20516         
20517 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20518
20519         * trace.c (get_token): Improve error checking.
20520
20521 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20522
20523         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20524
20525 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20526  
20527         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20528         it can be reused for MonoClass.
20529         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20530         _LINKDEMAND.
20531
20532 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20533
20534         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20535         instead of a MonoReflectionMethod. The method information wasn't used
20536         when displaying SecurityException details (but will be now).
20537
20538 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20539
20540         * Makefile.am : windows build fix.
20541
20542 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20543
20544         * iltests.il: Add new regression test.
20545
20546         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20547         #72522.
20548
20549 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20550  
20551         * mini.c: Moved linkdemand check into helper function check_linkdemand
20552         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20553         LDFTN, LDVIRTFTN).
20554
20555 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20556
20557         * declsec.c: Added statistics counter for different kinds of 
20558         LinkDemands.
20559         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20560         (and commented) declaration.
20561         * mini.c: Added statistics counter for security Demand code 
20562         generation. Added display of security statistics.
20563
20564 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20565
20566         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20567         Fix compilation errors under gcc-2.95.
20568
20569 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20570
20571         * mini.c, driver.c: Use the new jit trampoline hashtable
20572
20573 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20574
20575         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20576
20577 2005-02-11  Martin Baulig  <martin@ximian.com>
20578
20579         * debug-mini.c (mono_debug_close_method): Free the line number array.
20580
20581 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20582
20583         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20584         icalls.
20585
20586         * mini.h: Bump AOT file format version. 
20587
20588 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20589
20590         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20591         APTC and P/Invoke.
20592         * declsec.h: Added macros to get/set lazyly initialized security 
20593         informations about assemblies. Added new enum for different type of
20594         possible LinkDemand violation. Added function to check LinkDemands.
20595         * mini.h: Added a field to MonoCompile to hold any security violation
20596         detected when JITting a method (so it can be thrown later).
20597         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20598         and CEE_CALLVIRT. Added code to throw exception at the end of
20599         mini_method_compile (note: the exception is unhandled right now).
20600
20601 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20602
20603         * mini.c, jit-icalls.c: use the managed implementation of
20604         memset for initobj and memset, to avoid managed <-> unmanaged
20605         transitions.
20606
20607 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20608
20609         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20610         optimization if it would need a GOT var.
20611
20612         * basic.cs: Add tests for constant propagation and switch statements.
20613
20614         * ssa.c: Fix out-of-range constant propagation and switch statements.
20615
20616 2005-02-09    <vargaz@freemail.hu>
20617
20618         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20619
20620 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20621
20622         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20623
20624 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20625
20626         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20627
20628 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20629
20630         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20631         arithmetic operations.
20632
20633 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20634
20635         * mini-ppc.c: add a workaround for broken user code that
20636         DllImports vararg functions with non-vararg signatures.
20637
20638 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20639
20640         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20641         meaningfull error message for assemblies written in Managed C++.
20642
20643         * tramp-amd64.c mini-amd64.h: Add support for 
20644         create_trampoline_from_token ().
20645
20646         * aot.c mini-x86.c abcremoval.c: Applied patch from
20647         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20648
20649 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20650
20651         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20652         which takes a MonoImage/token as parameter instead of a MonoMethod.
20653
20654         * aot.c: Use the new trampoline for initializing vtables.
20655
20656         * aot.c: Add support for ldfld/stfld_remote wrappers.
20657
20658         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20659         rules for compare <MEM>, IMM.
20660
20661         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20662
20663         * aot.c: Handle inherited finalizers correctly.
20664
20665 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20666
20667         * inssel.brg (stmt): Add a missing _setup_... ().
20668
20669         * aot.c: Save some parts of the class state to the AOT file and use it
20670         to recompute that state when a class is initialized.
20671
20672         * mini.c: Install AOT hooks into the runtime.
20673
20674         * mini.h: Bump AOT file format version.
20675         
20676         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20677         Fixes #72148.
20678
20679         * iltests.il: Add new test.
20680
20681 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20682
20683         * mini.c: fix typo.
20684
20685 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20686
20687         * mini.c: setup the statistical profiler in the thread attach
20688         callback to cope with the new single thread code.
20689
20690 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20691
20692         * mini-ppc.c: ensure we have enough room for the profiler
20693         calls (fixed bug#72084).
20694
20695 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20696
20697         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20698         it.
20699
20700 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20701
20702         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20703
20704 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20705
20706         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20707         to succesfully execute parrotbench).
20708         * ssapre.h: Likewise.
20709
20710 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20711
20712         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20713         variable for stores to method arguments (fixes a SSAPRE issue).
20714
20715 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20716
20717         * mini.c: handle value types in dup, fixes gen-112.cs.
20718
20719 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20720
20721         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20722         sequence for calls in dynamic methods to avoid thunks.
20723
20724 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20725
20726         * mini.c: correctly remove dynamic methods from the hashtable.
20727
20728 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20729
20730         * driver.c: Disabled SSAPRE until fix the bug that appears
20731         in IronPython's parrotbench.
20732
20733 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20734
20735         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20736
20737         * mini.c (mono_method_to_ir): Revert the previous change.
20738         
20739         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20740         when AOT compiling.
20741
20742         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20743         mono_jit_info_table_find () etc. when running under valgrind.
20744
20745         * inssel.brg: Fix warnings.
20746
20747         * mini-exceptions.c: Fix warnings.
20748
20749 2005-01-31  Martin Baulig  <martin@ximian.com>
20750
20751         * driver.c (compile_all_methods_thread_main): Don't try to compile
20752         generic methods or anything which has type parameters.
20753
20754 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20755
20756         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20757
20758         * TestDriver.cs: Add --verbose flags.
20759
20760         * graph.c ssa.c: Fix 64 bit warnings.
20761         
20762         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20763         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20764         Fix 64 bit warnings.
20765
20766         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20767         variable not spotted by gcc.
20768         
20769         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20770         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20771         X86_COMPARE_MEMBASE opcodes.
20772
20773         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20774
20775 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20776
20777         * *: MonoMethod->signature might be NULL now. You *MUST* use
20778         mono_method_signature.
20779
20780 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20781
20782         * driver.c (compile_all_methods_thread_main): Compile the methods
20783         without invoking cctors.
20784
20785 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20786
20787         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20788         * basic-calls.cs: test for the above.
20789
20790 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20791
20792         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20793         MonoJitInfo changes.
20794
20795 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20796
20797         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20798         eagerly if it contains dynamic methods.
20799         
20800         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20801
20802         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20803         trace, it is now computed by an icall from trace_ips.
20804         
20805         * mini-exceptions.c: Fix a warning.
20806
20807 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20808
20809         * mini-exceptions.c: don't bother getting stack trace info if
20810         it's not going to be used.
20811
20812 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20813
20814         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20815         ssapre-mini-ops.h.
20816
20817 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20818
20819         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20820
20821         * aot.c: Avoid calling mono_method_get_header () if not needed.
20822
20823         * mini.h: Bump AOT file format version.
20824         
20825         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20826
20827         * mini.c (mono_print_tree): Print more info for calls.
20828
20829 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20830
20831         * declsec.h: Remove warning by adding missing include for marshal.h
20832
20833 2005-01-26  Martin Baulig  <martin@ximian.com>
20834
20835         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20836         `ip' twice.
20837
20838 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20839
20840         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20841         flags.
20842
20843         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20844
20845         * aot.c (mono_compile_assembly): Fix a warning.
20846
20847 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20848
20849         * declsec.c: Look for security attributes on the original MonoMethod 
20850         (and not the wrapped one). This fix permissions on icalls.
20851
20852 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20853
20854         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20855
20856         * mini.c (mono_allocate_stack_slots): Add a fixme.
20857
20858         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20859
20860 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20861
20862         * inssel.brg: optimize casts of sealed types (more
20863         optimizations waiting for fixes in remoting).
20864
20865 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20866
20867         * inssel.brg (stmt): Add another dummy rule.
20868
20869         * driver.c: Fix warnings.
20870
20871         * driver.c (mono_main): If running under valgrind, instruct glib to use
20872         the system allocation functions so valgrind can track the memory
20873         allocated by the g_... functions.
20874
20875         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20876
20877         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20878
20879         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20880
20881         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20882         variables in try regions.
20883
20884         * mini.c (mini_method_compile): Don't disable optimizations on large
20885         methods when AOT compiling.
20886
20887         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20888         allocate stack slots. Not yet used.
20889
20890 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20891
20892         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20893
20894 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20895
20896         * mini-ppc.c: make the branch info relative as the code
20897         buffer can be reallocated.
20898
20899 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20900
20901         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20902         * driver.c: Removed the AOT/security restriction. Now initialize the
20903         security manager (in metadata) if --security is used.
20904         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20905         rather than the pointer to declarative security, when AOT is used.
20906
20907 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20908
20909         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20910         basic blocks, reduced intrinsic exception throwing code size.
20911
20912 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20913
20914         * driver.c (mini_usage): Reorder the usage screen.
20915
20916 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20917
20918         * mini.c (mono_resolve_patch_target): Fix warning.
20919
20920 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20921
20922         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20923         previous patch.
20924
20925         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20926
20927         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20928         breaks the amd64 build.
20929
20930         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20931         register allocation. Fixes #71454.
20932
20933         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20934
20935         * arrays.cs: Add new regression test.   
20936
20937 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20938
20939         * ssapre.c: Turned usage of snprintf to GString.
20940         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20941         (I left it on by mistake in my previous commit).
20942
20943 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20944
20945         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20946         on cond branch optimization (fixes bug# 71515).
20947
20948 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20949
20950         * abcremoval.c: Fixed bug 71062.
20951         * abcremoval.h: Likewise.
20952
20953 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20954
20955         * mini.c: Added a new functionality to optimize_branches, the removal
20956         of useless basic blocks, and fixed some problem in the removal of
20957         critical edges; some utility functions added for both purposes.
20958         * ssapre.c: Added complex expression support, and fixed bug 70637.
20959         * ssapre.h: Likewise.
20960         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20961         enabled in SSAPRE.
20962         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20963         * driver.c: Re-enabled SSAPRE.
20964
20965 2005-01-19  Martin Baulig  <martin@ximian.com>
20966
20967         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20968         the result of mono_get_method_constrained().
20969
20970 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20971
20972         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20973         manager.
20974
20975 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20976
20977         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20978         be detected.  Fixes #59296.
20979
20980 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20981
20982         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20983         which can happen. Fixes #71361.
20984
20985 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20986
20987         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20988         manager.
20989
20990 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20991
20992         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20993         appdomain-unload.exe to fail.
20994         
20995         * mini.c: Fix some memory leaks.
20996
20997 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20998
20999         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
21000         Fixed bug and sped up some codepaths.
21001
21002 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
21003
21004         * mini.c: Fix some memory leaks.
21005
21006         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
21007         conversion.
21008
21009         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
21010
21011         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
21012         #71320.
21013
21014         * iltests.il: Add regression test for #71320.
21015
21016 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
21017
21018         * mini.c (mono_codegen): Fix installation of profiler hooks.
21019
21020         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
21021
21022 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
21023
21024         * mini.h, mini.c, cfold.c: optimize access to enum
21025         readonly fields, too. Eval conditional branches if possible
21026         to perform unreachable code removal in more cases.
21027
21028 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
21029
21030         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
21031
21032         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
21033         code manager.
21034
21035         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
21036         WinXP DEP. Fixes #71244.
21037
21038 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
21039
21040         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
21041
21042 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
21043
21044         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
21045
21046 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
21047
21048         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
21049         changes.
21050
21051         * mini.h: Bump AOT version.
21052
21053         * mini.h (MonoCompile): Change exvar to a hash table.
21054
21055         * mini.c: Allocate a separate exvar for each handler block.
21056
21057         * mini.c: Get rid of the computation of filter_lengths, its not needed.
21058
21059         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
21060         ex var with the pending exception and only throw if the two are equal.
21061         Fixes #68552.
21062         
21063         * exceptions.cs: Add tests for rethrow and nested catch clauses.
21064
21065         * mini-x86.c: Fix warnings.
21066
21067         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
21068         used by all the ports now.
21069
21070         * aot.c: Add write-symbols and save-temps options.
21071
21072 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
21073
21074         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
21075
21076 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
21077
21078         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
21079         operations.
21080
21081         * tramp-s390.c: Check vtable slot belongs to the domain.
21082
21083         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
21084         as per other platforms.
21085
21086         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
21087
21088 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
21089
21090         * driver.c: we don't run the Main() code in a subthread anymore.
21091
21092 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
21093
21094         * mini.c: added experimental rtc support in the statistical
21095         profiler: if the user has the permission, more accurate statistics
21096         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
21097         The MONO_RTC value must be restricted to what the linux rtc allows:
21098         power of two from 64 to 8192 Hz.
21099
21100 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
21101
21102         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
21103
21104 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
21105
21106         * mini-ppc.c: better icache flush for smp.
21107
21108 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
21109
21110         * mini-amd64.c (emit_move_return_value): Fix memory leak.
21111
21112         * mini-x86.c (get_call_info): Add the get_call_info () code from the
21113         amd64 port, not yet used.
21114
21115 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21116
21117         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
21118         a struct type.
21119
21120 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
21121
21122         * driver.c: Added --security option to activate the security manager.
21123         Right now this will allow code generation for declarative demands and
21124         is disabled when AOT is specified.
21125         * mini.c: Add code generation for declarative security demands.
21126         * mini.h: Add mono_use_security_manager as an extern gboolean.
21127
21128 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21129
21130         * aot.c (mono_compile_assembly): Speed up compilation a bit by
21131         emitting more dense assembly code.
21132
21133         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
21134         exception throwing stuff.
21135
21136 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
21137
21138         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
21139         dead code.
21140
21141         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
21142         left in by mistake.
21143
21144         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
21145         fixed.
21146
21147         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
21148
21149         * tramp-*.c: Only patch vtable slots if the object is in the current
21150         domain. Fixes appdomain-unload.exe.
21151
21152         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
21153         
21154         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
21155         x86 branch.
21156
21157 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21158
21159         * mini.c (reverse_branch_op): New helper function.
21160
21161         * mini.c (optimize_branches): Run the new optimization only on 
21162         platforms which support it. Also reverse all kinds of branches.
21163
21164         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
21165
21166         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
21167         a throw statement.
21168
21169         * mini.c (optimize_branches): Reverse not-equals branches if the false
21170         bblock is a throw. This happens a lot of time with argument checking in
21171         corlib.
21172
21173         * mini.c (mono_codegen): Add support for placing basic blocks after
21174         the function epilogue.
21175
21176         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
21177         function epilogue.
21178         
21179 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
21180
21181         * mini.c (setup_stat_profiler): Only set this up if the platform
21182         supports ITIMER_PROF.
21183
21184 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21185
21186         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
21187         previous patch.
21188
21189         * inssel.brg: Fix a warning.
21190
21191 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
21192
21193         * mini.c: added support for statistical profiler 
21194         (run with: --profile=default:stat).
21195
21196 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
21197
21198         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
21199
21200         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
21201
21202         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
21203         related to global registers from the amd64 port.
21204
21205 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21206
21207         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
21208
21209         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21210         with global registers.
21211         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21212
21213         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21214
21215 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21216
21217         * debug-mini.c (encode_value): Fix off-by-one.
21218
21219         * aot.c (encode_value): Likewise.
21220
21221         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21222
21223 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21224
21225         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21226         AOT.
21227
21228         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21229         
21230         * aot.c (emit_method_info): Increase size of temp buffer.
21231
21232         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21233         the AOT case.
21234
21235 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21236
21237         * aot.c (emit_method_info): Fix build.
21238         
21239         * aot.c: Further rework of the AOT file format to reduce the size of
21240         the method info data.
21241
21242         * mini.h: Bump AOT file format version.
21243
21244 2004-12-27  Martin Baulig  <martin@ximian.com>
21245
21246         * mini.c (mini_get_method): New static method; call
21247         mono_get_method_full() and mono_get_inflated_method().
21248         (mono_method_to_ir): Use mini_get_method() instead of
21249         mono_get_method_full(). 
21250
21251 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21252
21253         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21254
21255 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21256
21257         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21258
21259         * inssel-amd64.brg: Add some optimization rules.
21260
21261 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21262
21263         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21264         standard not GC'd stuff is fine.
21265
21266 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21267
21268         * aot.c: Rework the AOT file format to get rid of most of the global
21269         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21270
21271         * mini.h: Bump AOT file format version.
21272         
21273 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21274
21275         * mini.h: Bump AOT file format version.
21276
21277         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21278         address is inside a GOT.
21279
21280         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21281
21282         * cpu-pentium.md: Increase the maximum size of some instructions which
21283         might involve a got access.
21284         
21285         * mini.c (get_method_from_ip): Another debug helper function.
21286
21287         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21288         when got var accesses are created during the decompose phase.
21289
21290         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21291
21292         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21293         argument mini_compile_method and to MonoCompile, and use this to
21294         determine whenever a given method is compiled for AOT. This allows the
21295         other methods compiled during AOT compilation to be free of AOT stuff,
21296         so the backends does not need to add special support for them by
21297         creating a fake GOT etc.
21298
21299         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21300         longer needed.
21301
21302 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21303
21304         * mini.c (mono_method_to_ir): It turns out that some of the
21305         x-appdomain wrappers are lax with types, so just ignore this for
21306         all wrappers.
21307
21308         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21309         at the vtable->klass. If it is non-shared code we can just use the
21310         vtable.
21311
21312 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21313
21314         * mini-ppc.c: access MonoDomain from tls, too.
21315
21316 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21317
21318         * declsec.c: Removed unused variable (and related warning ;-)
21319
21320 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21321
21322         * iltests.il: New test for LDELEMA on an array of ref types.
21323
21324         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21325         all ldelema's on reftypes.
21326         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21327         it was the wrong place to put it.
21328
21329         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21330         register to pop to make this cleaner, at the request of Paolo.
21331
21332 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21333
21334         * mini-ops.h (OP_GETHASHCODE): New op.
21335
21336         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21337
21338         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21339         operation.
21340
21341         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21342         by 25%.
21343         
21344         * mini-x86.c (mono_arch_output_basic_block): Rather than
21345
21346         add ebp, 4
21347
21348         Emit
21349
21350         pop edx
21351
21352         The first is 3 bytes while the second is 1. This saves 36 kb on
21353         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21354         see a small boost because of icache locality.
21355
21356         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21357
21358 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21359
21360         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21361         started code sharing with the generic code.
21362
21363 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21364
21365         * mini-ppc.c, cpu-g4.md: added code for direct access to
21366         tls data slots.
21367
21368 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21369
21370         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21371          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21372         to OP_TLS_GET.
21373
21374 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21375
21376         * declsec.c|h: Added functions to cache the declarative stack modifiers
21377         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21378         structure.
21379         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21380         created. Register internal calls for System.Security.SecurityFrame::
21381         _GetSecurityFrame and _GetSecurityStack.
21382         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21383         the definitions for the new stack walk/callback mechanism.
21384         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21385         first security frame for LinkDemands and InheritanceDemands) and
21386         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21387         from lupus.
21388         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21389         walk initialization (lupus).
21390
21391 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21392
21393         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21394         idiom.
21395         (handle_loaded_temps): Do not create a temporary variable for
21396         things that we know are temps. They will never be modified.
21397         (mono_spill_call): Set MONO_INST_IS_TEMP
21398         (mono_emulate_opcode): ditto
21399         (emit_tree): ditto
21400         (mono_method_to_ir.CEE_DUP): ditto
21401
21402 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21403
21404         * mini.c (type_to_eval_stack_type): Make this handle the void type
21405         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21406         (emit_tree): use ip_in_bb to special case some common idioms
21407         Update all callers to pass in the IP.
21408         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21409
21410         This gives us a nice 2% speedup in mcs bootstrap.
21411
21412         * mini-x86.c (peephole_pass): Peephole pass to make
21413         mov  [foo], eax
21414         push [foo]
21415
21416         into
21417
21418         mov [foo], eax
21419         push eax
21420
21421         * mini.c (ip_in_bb): new method.
21422         (mono_method_to_ir): use this method rather than doing the hash
21423         lookup ourselves.
21424
21425         * linear-scan.c (mono_linear_scan): When expiring actives, you
21426         don't need to keep around variables that expire on this
21427         instruction. This makes it so that:
21428              a = b + 1
21429         will turn into:
21430              store (ebx add (ebx, 1))
21431         which will become
21432              add ebx, 1
21433
21434 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21435
21436         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21437         combination to avoid doing two copies. Fix up problems with previous
21438         patch.
21439
21440         * mini.c: Fix 64 bit warnings.
21441
21442         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21443
21444 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21445
21446         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21447         changes from the x86 code.
21448
21449         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21450
21451 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21452
21453         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21454         throwing code to reduce its size, unify the AOT and non-aot code and 
21455         get rid of relocations in the AOT case.
21456
21457         * mini-x86.h mini.c exceptions-x86.c 
21458         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21459         raise corlib exceptions which doesn't require relocations in the 
21460         caller.
21461
21462         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21463
21464 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21465
21466         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21467         needed.
21468
21469         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21470         in the AOT case.
21471
21472 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21473
21474         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21475         with add function when used from Inc/dec atomic 
21476         functions. Re-enabled optimization on x86.
21477         * mini-ops.h: renamed atomic_add functions to
21478         allow _add to match the Interlocked::Add and
21479         _add_next to match Interlocked::Inc/Dec.
21480
21481 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21482
21483         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21484         linking of BBs to the end BB, and enabled SSAPRE also with
21485         consprop and copyprop (which was prevented by that bug).
21486
21487 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21488
21489         * mini-x86.c: disabling the Interlocked optimizing code. 
21490
21491 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21492
21493         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21494         file version check.
21495         
21496 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21497
21498         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21499         interlocked optimization due lack of support on x86, rewrote 
21500         exchange to take into account that base may be in eax.
21501         
21502         xsp works again; activated Interlocked optimizing code.
21503         
21504 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21505
21506         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21507
21508 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21509
21510         * mini-ops.h: Add new opcodes.
21511
21512         * mini.h: Add new patch types. Add got_var to MonoCompile.
21513
21514         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21515         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21516         make it work with all kinds of patchable code.
21517
21518         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21519         address of the GOT, and referencing entries in the GOT.
21520
21521         * mini.c: Add code to load the GOT address if needed by an opcode.
21522
21523         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21524         independent AOT code on the x86 using an elf-style Global Offset Table.
21525
21526 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21527
21528         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21529
21530 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21531
21532         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21533         when running xsp.
21534
21535 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21536
21537         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21538         of Interlocked:Increment/Decrement/Add as inline ops.
21539         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21540
21541 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21542
21543         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21544         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21545
21546 2004-12-12  Duncan Mak  <duncan@ximian.com>
21547
21548         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21549         again. `patch_info->table_size' is no longer valid after Zoltan's
21550         commit #37636.
21551
21552 2004-12-12  Martin Baulig  <martin@ximian.com>
21553
21554         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21555         if we are the "real" method, ie. not an inlined method inside it.
21556
21557 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21558
21559         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21560         before we look in the special fields table. This fixes
21561         ../tests/thread-static-init.cs.
21562
21563 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21564
21565         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21566         for Array get_Rank and get_Length. Fixes bug #70465.
21567
21568 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21569
21570         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21571         separate structure to reduce the size of MonoJumpInfo.
21572
21573 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21574
21575         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21576
21577 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21578
21579         * mini.c (mini_get_inst_for_method): Changed to allow ports
21580         to return a MonoInst instead of opcode 
21581         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21582         
21583         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21584         Allow ports to return a created MonoInst instead of op-code, will enable
21585         new optimizations.
21586         (renamed mini_get_opcode_for_method to better reflected the functionality)
21587
21588 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21589
21590         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21591
21592 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21593
21594         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21595         Fixes #69985.
21596
21597 2004-12-08  Martin Baulig  <martin@ximian.com>
21598
21599         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21600         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21601
21602 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21603
21604         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21605         correctly.
21606
21607         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21608         arithmetic.
21609
21610 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21611
21612         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21613
21614 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21615
21616         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21617         bug introduced by the previous patch.
21618
21619 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21620
21621         * mini-ppc.c, objectc.cs: handle large structs passed by value
21622         (fixes bug #69972).
21623
21624 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21625
21626         * mini-ppc.c: OP_ARGLIST implementation from
21627         Geoff Norton  <gnorton@customerdna.com>.
21628
21629 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21630
21631         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21632         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21633
21634 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21635
21636         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21637
21638 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21639
21640         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21641         support.
21642
21643 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21644
21645         * mini-sparc.c: Zero out localled-ed memory.
21646
21647         * iltests.il: Add tests for zeroing out localloc-ed memory.
21648
21649 2004-12-04  Martin Baulig  <martin@ximian.com>
21650
21651         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21652         mono_method_get_signature_full().       
21653
21654 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21655
21656         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21657         and some utility functions (always for SSAPRE), integrated SSAPRE.
21658         * mini.h: Likewise.
21659         * driver.c: Added ssapre option.
21660         * ssa.c: Small fix on OP_ARG handling.
21661         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21662         * Makefile.am: Likewise.
21663
21664 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21665
21666         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21667         now in the xp code.
21668
21669         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21670         icall.
21671
21672 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21673
21674         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21675         
21676         * cpu-s390.md : Increase instruction length of oparglist.
21677
21678         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21679
21680 2004-11-30  Martin Baulig  <martin@ximian.com>
21681
21682         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21683         virtual generic methods.  We call a special helper_compile_generic_method()
21684         icall to retrieve the method from the vtable, inflate and compile
21685         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21686
21687         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21688
21689 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21690
21691         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21692
21693 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21694
21695         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21696         Fixes #69929.
21697
21698 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21699
21700         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21701         platforms with PIC aot.
21702
21703 2004-11-28  Martin Baulig  <martin@ximian.com>
21704
21705         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21706         Fixes gen-112.cs.
21707
21708 2004-11-28  Martin Baulig  <martin@ximian.com>
21709
21710         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21711         the result of mono_type_get_underlying_type() to check whether
21712         we're byref.
21713
21714 2004-11-26  Martin Baulig  <martin@ximian.com>
21715
21716         * mini.c
21717         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21718         in the g_assert().
21719
21720 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21721
21722         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21723         the same way as the other arguments so they won't get clobbered.
21724
21725         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21726         calls through R11 since it is clobbered by the trampoline code.
21727
21728 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21729
21730         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21731         pick up in-tree mscorlib.dll.
21732
21733 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21734
21735         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21736
21737         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21738         runtime data/code are now stored in a table similar to the GOT in ELF. 
21739         This allows the code itself to be position independent.
21740
21741         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21742         loading changes.
21743
21744         * aot.c: Attach ELF type (object/function) directives to all global
21745         symbols.
21746
21747         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21748
21749         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21750
21751         * mini-amd64.h: Turn on PIC AOT code.
21752
21753         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21754         returning the offset within an OP_AOTCONST instruction where the GOT
21755         offset needs to be added.
21756
21757         * mini.h: Bump AOT file format version.
21758
21759 2004-11-25  Martin Baulig  <martin@ximian.com>
21760
21761         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21762         uninflated generic methods.
21763
21764 2004-11-25  Martin Baulig  <martin@ximian.com>
21765
21766         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21767
21768 2004-11-24  Martin Baulig  <martin@ximian.com>
21769
21770         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21771         original klass (this only applies for generic instances).
21772
21773 2004-11-24  Martin Baulig  <martin@ximian.com>
21774
21775         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21776         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21777         that array).
21778
21779 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21780
21781         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21782         localloc. Fixes #69678.
21783
21784         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21785         
21786 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21787
21788         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21789         used SSE registers on pinvoke calls. Fixes #69774.
21790
21791 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21792
21793         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21794         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21795
21796 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21797
21798         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21799         Refer directly to the mcs/ tree.
21800
21801 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21802
21803         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21804         Check if a trampoline for a synchronized method is required. 
21805
21806 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21807
21808         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21809         with localloc if needed. Throe arithmetric exception in
21810         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21811         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21812
21813 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21814
21815         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21816         types before switching on type.  Fixes #69622.
21817
21818 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21819
21820         * Makefile.am (check-local): New.  Integrate into 'make check'.
21821         (MCS,RUNTIME): Define using in-tree mono and mcs.
21822         (ILASM): New.
21823         (%.exe): Use $(ILASM).
21824
21825 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21826
21827         * mini-ppc.c: adjust initial prolog size (bug #69691).
21828
21829 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21830
21831         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21832         #69664.
21833
21834 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21835
21836         * Makefile.am (clean-local): Rename from 'clean'.
21837
21838 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21839
21840         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21841         to mono_arch_is_int_overflow. 
21842         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21843         SIGFPE events.
21844
21845 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21846
21847         * declsec.c|h: New files to support declarative security attributes.
21848         Added function to check if a method has (applicable) security.
21849         * mini.c|h: Add check for declarative security attributes in
21850         mono_method_check_inlining.
21851         * Makefile.am: Added declsec.c and declsec.h to the build.
21852
21853 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21854
21855         * mini.c, mini.h: update to keep dynamic code info per-domain.
21856
21857 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21858
21859         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21860         (mini_init): Get rid of it from here too.
21861
21862 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21863
21864         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21865         implemented OP_RETHROW (patch by Geoff Norton
21866         <gnorton@customerdna.com>).
21867
21868 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21869
21870         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21871         between appdomains.  Fixes appdomain-unload on PPC.
21872
21873 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21874
21875         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21876         mini-exceptions.c: handle the new wrapper types.
21877         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21878         token value as a MonoClass* when compiling a wrapper.
21879         mono_jit_create_remoting_trampoline now takes an additional
21880         MonoRemotingTarget parameter.
21881         
21882 2004-11-10  Martin Baulig  <martin@localhost>
21883
21884         * mini.c (mono_method_to_ir): Use `generic_container->context'
21885         rather than creating a new one.
21886
21887 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21888
21889         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21890
21891         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21892
21893 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21894
21895         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21896         the experimental aot cache stuff.
21897
21898 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21899
21900         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21901         mini-exceptions.c: update to exception clause structure changes.
21902
21903 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21904
21905         * exceptions-x86.c (throw_exception): Fix warnings.
21906
21907         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21908         for OP_RETHROW.
21909
21910 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21911
21912         * exceptions-sparc.c (get_throw_exception): Really fix this.
21913
21914 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21915
21916         * tramp-*.c: we no longer support icalls without wrappers, so
21917         a bit of code can be removed here
21918
21919 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21920
21921         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21922         patch.
21923
21924         * cpu-sparc.md: Add op_rethrow.
21925
21926         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21927
21928         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21929
21930         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21931         * mini-ops.h: Add OP_RETHROW.
21932
21933         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21934
21935         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21936
21937 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21938         
21939         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21940         Makes the output much easier to read
21941
21942 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21943
21944         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21945         prevents another huge leak when compiling with ssa. Secondly, the
21946         performance of doing this rather than freeing the lists is much
21947         better. GList does a lock every time you allocate a list link,
21948         so that it can use a memory pool. So, it is better to just use
21949         a memory pool of our own.
21950         
21951         * ssa.c, linear-scan.c: replace g_list_remove_link with
21952         g_list_delete.  The remove one does not free the GList, so we were
21953         leaking memory. On -O=all --compile-all with corlib, this cut down
21954         3 MB of allocations.
21955
21956 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21957
21958         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21959
21960         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21961
21962         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21963         into a new function mono_create_jit_trampoline ().
21964
21965 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21966
21967         * trace.c (get_spec): Allow tracing of classes without a namespace.
21968
21969 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21970
21971         * mini.c: Fix pointer overwrite in mini_method_compile.
21972
21973 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21974
21975         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21976         The darwin ABI needs some special handling for 1 and 2 byte structs
21977         Lets use lbz/lhz instead of lwz everywhere.
21978         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21979         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21980         Use stb/sth for the former, and put the latter always on stack instead of in
21981         argument registers.
21982
21983 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21984
21985         * trace.c (is_filenamechar): Add '_'.
21986
21987 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21988
21989         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21990
21991         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21992
21993 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21994
21995         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21996         depends on libmonogc. Fixes #68805.
21997
21998 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21999
22000         * mini.c (mono_jit_free_method): Provide extra information for
22001         this error.  Currently this leaks, but will be turned into a
22002         developer option in the future.
22003
22004 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
22005
22006         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
22007
22008 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
22009
22010         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
22011         boundary. Fixes reading of PATCH_INFO_R4 and R8.
22012         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
22013
22014 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
22015
22016         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
22017         trampolines for AOT code.
22018
22019 2004-10-22    <vargaz@freemail.hu>
22020
22021         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
22022         constructed types. Fixes #68136.
22023
22024 2004-10-21  Martin Baulig  <martin@ximian.com>
22025
22026         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
22027         if it returns true, unwind the stack to the call instruction.
22028
22029 2004-10-21    <vargaz@freemail.hu>
22030
22031         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
22032
22033         * mini.h: Bump AOT version number.
22034
22035         * objects.cs: Add another test for unbox trampolines.
22036
22037         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
22038         valuetype methods.
22039
22040 2004-10-20    <vargaz@freemail.hu>
22041
22042         * driver.c: Add SHARED to the set of optimizations tested.
22043
22044         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
22045
22046         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
22047         used by CEE_NEWARR.
22048
22049         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
22050
22051 2004-10-20  Martin Baulig  <martin@ximian.com>
22052
22053         * mini-exceptions.c (mono_handle_exception): Call
22054         mono_debugger_handle_exception() to tell the debugger about
22055         catch/finally clauses.
22056
22057 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
22058
22059         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
22060
22061         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
22062         #68447.
22063
22064 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
22065
22066         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
22067         methods as their native size, fixed bug #57543, #57545.
22068         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
22069         This saves a temporary register and mullw call down into 1 (minor perf
22070         increase for cases like sum = sum * 5;  This use to translate into:
22071             li r11,5
22072             mullw r28,r28,r11
22073         It now translates to
22074             mulli r28,r28,5
22075
22076 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
22077
22078         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
22079         #68388.
22080
22081 2004-10-11  Martin Baulig  <martin@ximian.com>
22082
22083         * mini.c (mono_method_to_ir): If we're a generic method, get the
22084         MonoGenericContainer from our MonoMethodNormal and create a
22085         MonoGenericContext from it.
22086
22087 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
22088
22089         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
22090
22091         * basic-long.cs: Add test for checked i8->i2 cast.
22092
22093 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22094
22095         * inssel-ppc.brg: added a couple of speedup rules.
22096
22097 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
22098
22099         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
22100         to speed up rebuilds.
22101
22102 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22103
22104         * mini-s390.c: Minor fix to OP_OR_IMM.
22105
22106 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
22107
22108         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
22109         better. Fixes appdomain-unload.exe on sparc.
22110
22111 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
22112
22113         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
22114         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
22115         see bug 67324.
22116
22117 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
22118
22119         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
22120
22121 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
22122
22123         * mini.c: Always generate a field read/write wrapper for members
22124         of the class MarshalByRefObject since the actual instance could
22125         be a CBO.
22126
22127 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
22128
22129         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
22130
22131 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
22132
22133         * driver.c mini.h trace.c: Move the setting of the main assembly into
22134         a separate function called mono_trace_set_assembly () and call it after
22135         actually loading the main assembly. Fixes #66872.
22136
22137 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
22138
22139         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
22140         using the code manager.
22141
22142 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
22143
22144         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
22145
22146 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
22147
22148         * cpu-amd64.md: Fix bug in previous patch.
22149         
22150         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
22151         #66650.
22152
22153 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
22154
22155         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22156         mini-exceptions.c: updates for changed stack walk interface.
22157
22158 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22159
22160         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
22161
22162 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
22163
22164         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
22165
22166 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
22167
22168         * driver.c (mini_regression_list): Do not call mono_assembly_close 
22169         since assemblies can't be unloaded.
22170         
22171 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22172
22173         * cpu-amd64.md: Fix more instruction lengths.
22174
22175         * cpu-amd64.md: Fix lengths of some instructions.
22176
22177 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
22178
22179         * inssel.brg: Make the array ldelema check aot friendly.
22180
22181 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22182
22183         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
22184
22185         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
22186
22187 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
22188
22189         * mini-x86.c: Fix build.
22190
22191         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
22192         mono_type_get_underlying_type () helper function to simplify code.
22193         
22194 2004-09-09  Martin Baulig  <martin@ximian.com>
22195
22196         * mini-amd64.c: Don't access `type->data.klass' directly, call
22197         mono_class_from_mono_type() instead since the type may be a
22198         generic instance.
22199
22200 2004-09-09  Martin Baulig  <martin@ximian.com>
22201
22202         * mini-amd64.c (get_call_info): Fix support for generic instances.
22203         (add_valuetype): Use mono_class_from_mono_type() to get the class
22204         since we can be a generic instance.
22205
22206 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
22207
22208         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22209
22210 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22211
22212         * liveness.c: reset spill costs on each scan: bug 62107
22213
22214 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22215
22216         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22217         unnecessary line that doesn't compile
22218
22219 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22220
22221         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22222         trampolines, make them call an error function so people can fix their
22223         code.
22224
22225 2004-09-06  Martin Baulig  <martin@ximian.com>
22226
22227         * mini.c (mono_method_to_ir): When initializing locals, handle a
22228         generic instances like a valuetype if it's a valuetype and like a
22229         class if it's a class.
22230
22231 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22232
22233         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22234         stack. Fixes #64674.
22235
22236         * exceptions.cs: Add test for unwinding of call arguments.
22237
22238 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22239
22240         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22241         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22242         set the carry/borrow flag). The sparc and s390 implementations
22243         can now use optimized versions (and simplify the code). ppc bugfixes.
22244
22245 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22246
22247         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22248
22249 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22250
22251         * inssel-amd64.brg: Remove leftover 32 bit rule.
22252
22253         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22254
22255 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22256
22257         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22258         mono_arch_find_jit_info functions into a new function. Fix a memory
22259         leak.
22260
22261         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22262         refactored code.
22263         
22264 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22265
22266         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22267         as well.
22268         
22269         * exceptions.cs: Add array size tests.
22270
22271         * mini.c: Allocate a separate icall wrapper for each arity of 
22272         mono_array_new_va. Fixes #59509.
22273
22274         * exceptions.cs: Add testcase for 64578.
22275
22276         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22277
22278         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22279         
22280 2004-09-02  Martin Baulig  <martin@ximian.com>
22281
22282         * mini.c (mono_method_to_ir): When initializing the locals, call
22283         handle_initobj() on the generic instance itself, not its
22284         underlying type.
22285
22286 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22287
22288         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22289         MonoJitInfo for dynamic methods.
22290
22291         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22292
22293         * mini.c: Add support for freeing JIT data for dynamic methods.
22294         
22295 2004-09-01  Martin Baulig  <martin@ximian.com>
22296
22297         * mini-x86.c (is_regsize_var): Added support for generic
22298         instances.
22299         (mono_arch_emit_prolog): Make this compile again, use
22300         `x86_push_imm_template (code)'.
22301
22302 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22303
22304         * mini-x86.c: make all push_imm instructions that get
22305         patched always emit the long form
22306
22307 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22308
22309         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22310         in a per-domain hash.
22311
22312         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22313         types.
22314
22315 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22316
22317         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22318         work.
22319         
22320         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22321         work.
22322
22323         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22324         Beginnings of SSE2 support.
22325
22326         * exceptions.cs: Add more tests for checked int<->uint casts.
22327
22328 2004-08-28  Martin Baulig  <martin@ximian.com>
22329
22330         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22331         generic instances.
22332
22333         * mini.c
22334         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22335         Handle generic instances recursively.
22336
22337 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22338
22339         * iltests.il: test for conv.u8 on a constant
22340
22341 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22342
22343         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22344         LCONV_x4 (shrun_32 (membase)).
22345
22346 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22347
22348         * inssel-x86.brg: c&p rules for push/setret of long
22349
22350 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22351
22352         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22353         compare (regvar, base)
22354
22355         * inssel-x86.brg: more burg love
22356
22357         * inssel.brg: more cleanup
22358
22359         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22360
22361 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22362
22363         * basic-long.cs, basic-calls.cs: new tests for optimization.
22364
22365 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22366
22367         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22368         patch.
22369
22370 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22371
22372         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22373         
22374 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22375
22376         * inssel.brg (mini_emit_memcpy): use 
22377         NO_UNALIGNED_ACCESS to disable memcpy optimization
22378
22379 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22380
22381         * mini-amd64.c: Handle generic types in various places.
22382
22383         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22384
22385 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22386
22387         * mini.c (handle_box): Fix warning.
22388
22389         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22390
22391         * mini-amd64.h: Enable the emit_state optimization.
22392
22393         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22394
22395         * mini-amd64.c: Add some new 64 bit peephole opts.
22396
22397         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22398
22399         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22400
22401         * mini-amd64.c: Register allocator fixes.
22402
22403         * mini.c: Add an optimization to emit_state to avoid allocation of new
22404         registers on some platforms.
22405
22406 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22407
22408         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22409
22410         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22411         allocation. Fixes #63085.
22412
22413         * basic-long.cs: Add new regression test.
22414
22415         * mini-amd64.c: Register allocator improvements.
22416
22417 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22418
22419         * mini-amd64.c (read_tls_offset_from_method): Add another code
22420         sequence.
22421
22422         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22423         instruction sequence for nullifying class init trampolines.
22424
22425         * objects.cs: Add new regalloc test.
22426
22427         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22428
22429 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22430
22431         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22432         
22433         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22434         arguments.
22435
22436         * driver.c: Fix profiling after TLS changes.
22437         
22438         * driver.c (mono_main): Set mono_stats.enabled if needed.
22439
22440         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22441         CEE_BOX.
22442
22443 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22444
22445         * mini-x86.c: use a 1 op rather than a 2 op tls access
22446         instruction -> faster.
22447
22448 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22449
22450         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22451         x86 backend.
22452
22453 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22454
22455         * exceptions-sparc.c (throw_exception): fix typo
22456
22457 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22458
22459         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22460         set tree->dreg correctly with tls. Allow any
22461         register to be used.
22462
22463         * mini-x86.c (read_tls_offset_from_method): add new code
22464         generation pattern seen with GCC.
22465
22466
22467 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22468
22469         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22470         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22471         exceptions-sparc.c: fix some performance issues in exception
22472         handling and setting of the stack trace for exceptions that were
22473         already thrown.
22474
22475 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22476
22477         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22478         x86 backend.
22479         
22480         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22481         registers.
22482
22483 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22484
22485         This patch inlines tls access, when possible.
22486         
22487         * mini.h: new arch functions for TLS intrinsics.
22488         All platforms updated with a stub.
22489
22490         * mini.c: use the new intrinsics
22491
22492         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22493         arch specific intrinsic for tls variables
22494
22495 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22496
22497         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22498         under windows.
22499
22500 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22501
22502         * mini.c: thread local allocation
22503
22504 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22505
22506         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22507
22508         * Makefile.am: Link against the static version of libmonogc.
22509         
22510         * Makefile.am: Link the static versions of the convenience libraries
22511         into the mono executable.
22512
22513         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22514
22515 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22516
22517         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22518         on integer overflow.
22519
22520         * mini-amd64.c: Reorganize function call code.
22521
22522         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22523
22524 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22525
22526         * inssel-x86.brg: use xor eax,eax.
22527         
22528         * basic.cs: new tests
22529
22530 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22531
22532         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22533         in exception throwing code.
22534         
22535 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22536
22537         * inssel-x86.brg: use xor esi,esi.
22538
22539 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22540
22541         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22542         can trace methods compiled during mini_init () too.
22543
22544         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22545         CEE_CONV_U4.
22546
22547 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22548
22549         * Makefile.am: static link on x86 (r=zoltan)
22550
22551 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22552
22553         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22554         code since it causes some programs to fail.
22555
22556 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22557
22558         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22559
22560 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22561
22562         * mini.c: ovfops_op_map - add STACK_OBJ case for
22563         CONV_I 
22564         * basic.cs: add test_0_pin_string as test
22565         case for above.
22566
22567 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22568
22569         * Makefile.am: build C# if srcdir != builddir
22570
22571 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22572
22573         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22574         fall-through blocks.
22575
22576 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22577
22578         * driver.c: enable loop by default again and include abcrem in -O=all.
22579
22580 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22581
22582         * iltests.il: Add some localloc tests.
22583
22584         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22585
22586         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22587         Fixes #62574.
22588
22589         * inssel-amd64.brg: Add some optimizations.
22590
22591         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22592         for gcc-3.4.
22593
22594         * Makefile.am: Statically link mono against libmono on AMD64.
22595         
22596         * mini-amd64.c inssel-amd64.brg: Optimizations.
22597
22598 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22599
22600         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22601
22602         * tramp-amd64.c: Patch calling code in trampolines.
22603
22604 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22605
22606         * mini-amd64.c: pinvoke struct passing fixes.
22607
22608 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22609
22610         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22611         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22612
22613 2004-08-05  Duncan Mak  <duncan@ximian.com>
22614
22615         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22616         CEE_LDELEM_ANY.
22617
22618 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22619
22620         * mini-amd64.c (emit_move_return_value): Move return value for normal
22621         calls too.
22622
22623 2004-08-05  Martin Baulig  <martin@ximian.com>
22624
22625         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22626         `type->type'; just modify `type' itself when dealing with enums
22627         and generic instances.
22628         (check_call_signature): Make `simple_type' a `MonoType *'.
22629
22630 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22631
22632         * mini.c: Use OP_PADD to add offsets to addresses.
22633
22634         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22635
22636 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22637
22638         * mini-sparc.c (mono_arch_emit_epilog): fix check
22639         for folding last op into restore instruction
22640
22641 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22642
22643         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22644         helper methods using the code manager.
22645         
22646         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22647
22648         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22649
22650 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22651         
22652         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22653           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22654
22655         * mini-s390.c: fix tail processing
22656
22657 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22658
22659         * mini-ppc.c: mul.ovf.un exception name fix.
22660
22661 2004-08-03  Martin Baulig  <martin@ximian.com>
22662
22663         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22664         instances; before jumping to `handle_enum', also modify `ptype'.
22665
22666 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22667
22668         * cpu-sparc.md: fcall maximal length too small.
22669
22670 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22671
22672         * mini-amd64.c mini.h: Add initial support for passing/returning 
22673         structures to/from pinvoked methods.
22674
22675 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22676
22677         * mini-ppc.c: reg allocator fix.
22678
22679 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22680
22681         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22682
22683         * inssel.brg: Optimize memset on 64 bit machines.
22684
22685         * mini-amd64.c: Fix some vararg cases.
22686
22687 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22688
22689         * mini-s390.c: Corrected macro in emit_float_to_int
22690
22691         * s390-abi.cs: Tests to exercise the s390 ABI
22692
22693 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22694
22695         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22696         caller saved regs.
22697
22698         * basic.cs: Add a test for add.ovf.un.
22699
22700 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22701
22702         * mini-sparc.c: add case for OP_IDIV_UN
22703
22704 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22705
22706         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22707         
22708         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22709
22710 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22711
22712         * basic.cs: regression tests.
22713
22714         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22715         regressions.
22716
22717 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22718
22719         * basic.cs: Add a new test.
22720
22721         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22722         and AOT. Various fixes and optimizations.
22723
22724         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22725
22726 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22727
22728         * mini-ppc.c: make sure temp regs are not used for global reg
22729         allocation.
22730
22731 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22732
22733         * cpu-sparc.md: conv_i8 fix for 64bits
22734
22735         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22736
22737 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22738         
22739         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22740         add opcode for cmp BYTE PTR [eax], imm.
22741
22742         * inssel.brg: Make memcpy and memset takes bases.
22743
22744 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22745
22746         * *-amd64.*: More AMD64 work.
22747         
22748 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22749
22750         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22751         add a compare-not-equal opcode.
22752         
22753 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22754
22755         * mini.c: Use mono_init_from_assembly instead of mono_init.
22756         
22757 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22758
22759         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22760
22761         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22762
22763         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22764
22765         * inssel.brg: 64 bit fixes.
22766
22767         * mini.h (MonoCallInst): Add some AMD64 specific data.
22768
22769         * mini.h: Add some OP_P opcodes.
22770
22771 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22772
22773         * basic.cs: tests for 61797 and 61740
22774
22775 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22776
22777         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22778         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22779
22780 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22781
22782         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22783
22784         * *-amd64*.*: Ongoing AMD64 work.
22785
22786 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22787
22788         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22789
22790         * *-amd64*: Ongoing AMD64 work.
22791
22792         * mini-arch.h: Add AMD64 support.
22793
22794         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22795
22796         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22797
22798         * mini-ops.h: Add new opcodes.
22799
22800         * Makefile.am: Add AMD64 support.
22801
22802         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22803         rules into the inssel-long*.brg files.
22804
22805         * *-amd64.*: Add beginnings of AMD64 backend.
22806
22807 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22808
22809         * mini.c (print_dfn): commenting out the code that prints
22810         the cil. With -O=deadce, this makes -v -v crash.
22811         
22812         * cpu-pentium.md: make checkthis have a length of 2
22813
22814 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22815
22816         * mini-sparc.h: fix implementations of __builtin
22817         functions for Sun compiler for V9.
22818
22819 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22820
22821         * mini.c: use the new stelem.ref wrapper
22822         * exceptions.cs, arrays.cs: new stelem.ref tests
22823
22824 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22825
22826         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22827         new XSP should work with these changes).
22828
22829 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22830         
22831         * inssel-{long32,x86,}.brg: trivial optimizations.
22832         
22833 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22834
22835         * mini.c: load value when emitting box operation in
22836         constrained calls.
22837
22838 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22839
22840         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22841         is one byte shorter than cmp DWORD PTR [eax], 0.
22842
22843 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22844
22845         * inssel-ppc.brg: arguments on the stack are always
22846         relative to the stack pointer (spotted by Neale Ferguson).
22847
22848 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22849
22850         * exceptions-x86.c: delay appending the method name to the trace until
22851         after mono_jit_info_table_find is called, as this gets the real
22852         MonoMethod.
22853
22854 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22855
22856         * aot.c: register roots
22857
22858 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22859
22860         * aot.c : I could just use PLATFORM_WIN32 flag.
22861
22862 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22863
22864         * aot.c : Reverting the previous fix. This time it broke linux build.
22865
22866 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22867
22868         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22869
22870 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22871
22872         * mini.c (handle_stack_args): Remove some more debugging code.
22873         
22874         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22875
22876         * driver.c mini.h aot.c: Allow additional options to be specified with
22877         --aot and pass them to mono_compile_assembly.
22878
22879         * aot.c: Add experimental code to AOT compile all loaded assemblies
22880         on demand and save the code into a cache in the filesystem.
22881
22882         * aot.c: Add support for more wrapper methods.
22883         
22884         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22885         58863.
22886
22887         * cpu-*.md: Remove removed opcodes.
22888
22889         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22890         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22891         related icalls to marshal.c.
22892
22893 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22894
22895         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22896
22897         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22898
22899         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22900
22901 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22902         * liveness.c: If liveness is recomputated we need to reset the information
22903         for each variable. This way, if the liveness range has been narrowed
22904         by optimizations that happened after the last computation, we can return
22905         a smaller range.
22906         
22907         For example, if you have
22908         
22909         {
22910                 int i = 0;
22911                 
22912                 // Tons of code that does not affect i
22913                 
22914                 i = foo ();
22915                 ...
22916         }
22917         
22918         i = 0 is dead code and will be removed by SSA. However, when
22919         linear scan gets to the code, i will still appear to be live
22920         throughout the entire block. This prevents good register allocation.
22921
22922 2004-07-06  Martin Baulig  <martin@ximian.com>
22923
22924         * debug-mini.c (mono_debug_init_method): Allow
22925         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22926         (mono_debug_add_icall_wrapper): New method.
22927
22928         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22929
22930 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22931
22932         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22933         optimization.
22934
22935 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22936
22937         * aot.c (mono_aot_load_method): Fix loading of debug info.
22938
22939 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22940
22941         * aot.c: Add logging support.
22942
22943 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22944
22945         * mini.h: Add prototype for mono_print_method_from_ip.
22946
22947         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22948
22949         * inssel.brg: 64 bit fixes.
22950
22951         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22952         inssel-long32.brg.
22953
22954         * Makefile.am: Add SPARC64 support.
22955
22956 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22957
22958         * aot.c: Fix alignment problems on 32 bit platforms.
22959
22960 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22961
22962         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22963         SPARC64.
22964
22965         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22966         problems.
22967
22968         * mini.h: Bump AOT file version. Some 64 bit fixes.
22969
22970 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22971
22972         * inssel-sparc.brg: Add new rule to avoid register moves.
22973
22974         * inssel.brg: Add ldind_to_load_membase helper function.
22975
22976 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22977
22978         * mini.c: OffsetToStringData intrinsic.
22979         
22980 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22981
22982         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22983
22984         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22985         regression tests.
22986
22987         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22988 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22989
22990         * mini.c: reinstated mono_compile_get_interface_var()
22991         on x86, too, since the change breaks the Gtk# build there as well.
22992
22993 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22994
22995         * driver.c: remove loop from the default optimizations: it seems to
22996         interact badly with some of the other options (see bug #60613).
22997
22998 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22999
23000         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
23001         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
23002
23003 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
23004
23005         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
23006         vararg-using methods.
23007
23008 2004-06-21  Martin Baulig  <martin@ximian.com>
23009
23010         * mini/mini-exceptions.c
23011         (mono_handle_exception): Added `gpointer original_ip' argument.
23012         After calling mono_unhandled_exception(), call
23013         mono_debugger_unhandled_exception() and if that returns true,
23014         restore the context and return.
23015
23016 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
23017
23018         * mini-ppc.c: prefer the use of relative branches so
23019         they won't need to be patched in aot code (patch from Patrick Beard).
23020
23021 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23022
23023         * aot.c: patch from Patrick Beard to make the output assembly
23024         more correct for the MacOSX assembler. Small tweak to
23025         generate sane images on Linux/PPC, too.
23026
23027 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23028
23029         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
23030         case until bug #59509 is fixed (shows up in #60332).
23031
23032 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23033
23034         * mini.c: make sure the needed wrappers are compiled, too, with
23035         precomp.
23036
23037 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
23038
23039         * driver.c: remove NPTL reference in --version output.
23040
23041 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23042
23043         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
23044         generate valid assembly for the Mach-O assembler.
23045
23046 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23047
23048         * driver.c: don't include abcrem in the all optimization specifier
23049         since it slows down jit compilation too much for now.
23050
23051 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
23052
23053         * mini.c: use BIGMUL only if both operands have the same signage.
23054         * iltests.il: Test for bug 60056. (errors related to signage in
23055         BIGMUL).
23056
23057         r=lupus.
23058
23059 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
23060
23061         * mini.c, aot.c: memory leak fixes.
23062
23063 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23064
23065         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
23066
23067 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
23068
23069         * Makefile.am: remove the -static hack completely, it links in
23070         statically glib as well.
23071
23072 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
23073
23074         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
23075         * exceptions.cs: make it compile with new mcs/csc.
23076
23077 2004-06-03 Massimiliano Mantione <massi@ximian.com>
23078         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
23079         and added relevant test case.
23080
23081 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23082
23083         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
23084         regressions in gtk-sharp.
23085
23086 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
23087
23088         * exceptions.cs: New regression tests.
23089
23090         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
23091
23092 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
23093
23094         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
23095
23096 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
23097
23098         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
23099
23100         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
23101
23102 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
23103
23104         * mini.c (mono_jit_runtime_invoke): Init class in this
23105         method instead of trusting mono_jit_compile_method to
23106         do the work (because wrappers can be in object class)
23107
23108 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
23109
23110         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
23111
23112         * basic-long.cs: New regression test.
23113
23114 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
23115
23116         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
23117         and div/rem checks.
23118
23119 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
23120
23121         * Makefile.am: fix miguel's change to build mono statically against
23122         libmono (track build dependencies).
23123
23124 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23125
23126         * cfold.c: Some glib versions do not have G_MININT32.
23127
23128 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
23129
23130         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
23131         with precision of tan, atan, sin and cos, and implemented related
23132         regressions tests (fixes bug 54467, but one new problem appeared and
23133         is not fixed yet).
23134
23135 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23136
23137         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
23138
23139         * exceptions.cs: Add test for constant folding && division by zero.
23140
23141         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
23142         since driver.c is in libmono too, so the optimization was useless.
23143
23144         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
23145         variable to driver.c so the compiler can emit more efficient code to
23146         access them.
23147
23148 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23149
23150         * Makefile.am: don't distribute generated inssel.[ch] files.
23151
23152 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
23153
23154         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
23155         into the default appdomain. Fixes #58707.
23156
23157         * jit-icalls.c: Remove the broken approximation for truncl, doing
23158         no conversion is better.
23159
23160         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
23161         Fixes #58863.
23162
23163 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23164
23165         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
23166         of the mcrxr instruction which is not available on some processors
23167         even if it's documented to be. Implement add and sub overflow correctly
23168         (still not complete for long unsigned). Speed up icalls a bit.
23169
23170 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
23171
23172         * mini.c (mono_jit_compile_method_with_opt): Make sure that
23173         we run .cctor in the current domain instead of target_domain.
23174         
23175         Fixes bug #58558, .cctor not being called in -O=shared.
23176
23177 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23178
23179         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
23180
23181 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
23182
23183         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
23184         which can be done with an imm8, do it that way.
23185         (mono_arch_output_basic_block): ditto for a jmp
23186         (mono_arch_emit_prolog): Computate maximum offset of a label.
23187
23188 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
23189
23190         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
23191         now tries to allocate prefered physical reg's for virtual
23192         regs. This reduces the number of emited spills/loads with
23193         20-30% on our core assemblies.
23194
23195 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23196
23197         * jit-icalls.c: truncl() is not needed and trunc() is
23198         the correct thing to do anyway (bug #58287).
23199
23200 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
23201
23202         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
23203         if available.
23204
23205 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23206
23207         * driver.c: enable loop optimizations by default.
23208
23209 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23210
23211         * mini-x86.c: fix calc of max loop size when aligning loops start.
23212
23213 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23214
23215         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23216         the stack.
23217
23218 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23219
23220         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23221         should set carry.
23222
23223         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23224
23225         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23226         
23227         * mini.c (inline_method): Allways inline some wrappers even if the cost
23228         is too large. Fixes #58785.
23229
23230         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23231         
23232 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23233
23234         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23235         (crichton@gimp.org). Beginning of support for sparc/linux.
23236
23237         * mini-sparc.c: Optimize retrieval of LMF address.
23238
23239 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23240
23241         * exceptions-ppc.c:  handle alloca in methods with clauses.
23242
23243 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23244
23245         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23246
23247 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23248
23249         * mini.c: Delegate most of the abort signal work to 
23250           mono_thread_request_interruption, which also handles Stop and Suspend
23251           states.
23252
23253 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23254
23255         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23256         supports the save/restore lmf opcodes.
23257
23258 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23259
23260         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23261         by gcc-3.4 as well.
23262
23263         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23264
23265 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23266
23267         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23268         methods which contain array accesses.
23269
23270         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23271         boundaries. Fixes #58537.
23272
23273         * iltests.il: Add regression test for #58537.
23274
23275 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23276
23277         * mini-x86.c (mono_arch_local_regalloc): Last part of
23278         fix for bug #58633 (releasing register to early).
23279
23280 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23281
23282         * basic-long.cs: Add new regression test.
23283
23284 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23285
23286         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23287         register too early on the chain.
23288
23289 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23290
23291         * mini.c (create_helper_signature): Use a helper function to reduce
23292         the code which needs to be written. Also set the calling convention of
23293         icalls on windows. Fixes #57840.
23294
23295 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23296
23297         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23298         exceptions-ppc.c: added helper function to get the instruction address
23299         from a signal handler context.
23300
23301 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23302
23303         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23304         from gonzalo.
23305
23306 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23307
23308         * helpers.c: Add new env variable to pass args to objdump.
23309         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23310
23311 2004-05-17  Radek Doulik  <rodo@ximian.com>
23312
23313         * Makefile.am (common_sources): added abcremoval.h so it get
23314         disted and daily mono packages on go-mono.com will build again
23315
23316 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23317
23318         * abcremoval.c: Fixed coding style, added copyright header.
23319
23320         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23321
23322         * mini.h: Added prototype for abc removal main function.
23323
23324         * build_relations_propagation_table.pl: Added copyright header.
23325
23326 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23327
23328         * basic-long.cs: reg test for complex ceq_long bug.
23329
23330 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23331
23332         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23333         reg in long and clob case (bug #58343). Fixed/added comments.
23334
23335 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23336
23337         * mini.c (mono_jit_runtime_invoke): Follow new convention
23338         of calling the invoke method with an function pointer.
23339
23340 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23341
23342         * ChangeLog: Fix author of memory leak patch.
23343
23344 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23345
23346         * Makefile.am: fix make dist as well...
23347
23348
23349 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23350
23351         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23352         on archs where pointers are 4 bytes long.
23353
23354         * Makefile.am: Added abcremoval.c source file.
23355
23356         * abcremoval.c: Added abcremoval.c.
23357
23358         * abcremoval.h: Added abcremoval.h.
23359
23360         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23361
23362         * inssel.brg: Enabled bounds check removal.
23363
23364         * mini.c: Added support for abcrem optimization.
23365
23366         * mini.h: Added abcrem optimization label.
23367
23368         * driver.c: Added support for abcrem optimization.
23369
23370         * propagated_relations_table.def: Added propagated_relations_table.def.
23371
23372 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23373
23374         * mini.c, cfold.c: fix style.
23375
23376 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23377
23378         * mini.c: handle issue with the low-level implementation of
23379         some long opcodes (bug #54209).
23380
23381 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23382
23383         * basic.cs: test for my new cmov stuff.
23384
23385 2004-05-13      Patrik Torstensson
23386
23387         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23388         opt and added peephole documentation.
23389
23390 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23391
23392         * tramp-ppc.c: rewrote the generic trampoline code.
23393
23394 2004-05-11      Patrik Torstensson
23395
23396         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23397
23398 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23399
23400         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23401
23402         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23403         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23404
23405         * mini.c: Add new icalls for AsAny marshalling.
23406
23407 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23408
23409         * tramp-ppc.c, mini-ppc.c: more cleanups.
23410
23411 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23412
23413         * mini.c: no warnings.
23414
23415 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23416
23417         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23418
23419 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23420
23421         * mini.c: In the thread abort signal handler, if the thread is in the
23422         process of being stoped, don't throw the Abort exception, just stop the
23423         thread.
23424
23425 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23426
23427         * tramp-ppc.c: removed old code.
23428
23429 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23430
23431         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23432         do some simple speed optimizations on ppc.
23433
23434 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23435
23436         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23437         and large offsets in load/store.
23438
23439 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23440
23441         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23442         it causes regressions.
23443
23444 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23445
23446         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23447         support.
23448
23449 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23450
23451         * jit-icalls.c: remove warnings.
23452         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23453         speedups for unsafe code.
23454
23455 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23456
23457         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23458
23459 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23460
23461         * basic-calls.cs: Add new regression test.
23462
23463         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23464         more portable.
23465
23466         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23467
23468         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23469         is no longer used.
23470
23471 2004-05-06      Patrik Torstensson
23472
23473         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23474         long reg allocation in any reg (not only eax:edx) and implemented 
23475         long shl/shr ops in asm instead of helpers.
23476
23477 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23478
23479         * mini-sparc.h: Fix warnings.
23480
23481         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23482         stack.
23483
23484         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23485         separate statement for clarity.
23486
23487         * mini-sparc.c: Update status.
23488
23489 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23490
23491         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23492         here.
23493
23494 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23495
23496         * inssel-ppc.brg: another small pre-release workaround:
23497         we don't do overflow detection for long_sub_un.
23498
23499 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23500
23501         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23502         (also works around a weird ppc bug: 57957).
23503
23504 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23505
23506         * tramp-ppc.c: trampoline fixes.
23507
23508 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23509
23510         * mini-ppc.c: fixed typos.
23511
23512 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23513
23514         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23515         at the top of the stack. Fixed typos. Use a frame registers
23516         for all the methods with exception clauses.
23517
23518 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23519
23520         * exceptions-ppc.c: restore fp registers.
23521
23522 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23523
23524         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23525         order from the stack top (moved the stack room to save the
23526         return value for trace after the param area). Fixed corruption
23527         in restoring registers on unwind.
23528
23529 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23530
23531         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23532
23533 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23534
23535         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23536         and prolog/epilog for methods that use it. Allow
23537         enough param area room for varargs methods. Fix miguel's
23538         breakage in exception handling.
23539
23540 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23541
23542         * Makefile.am: run genmdesc only on current arch.
23543
23544 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23545
23546         * exceptions-x86.c:
23547         * mini-x86.h: fix the build on windows.
23548
23549 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23550
23551         * 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.
23552
23553         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23554
23555         * mini-exceptions.c: New file.
23556         
23557         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23558         Move some parts of the x86 exception handling code to an 
23559         arch-independent file so it can be shared with other ports.
23560
23561 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23562
23563         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23564
23565 2004-04-26  David Waite  <mass@akuma.org>
23566
23567         * driver.c: remove comma from end of enumeration declaration
23568
23569 2004-04-26  Jackson Harper  <jackson@ximian.com>
23570
23571         * driver.c: parse config file before loading first assembly. This
23572         allows the user gac to be enabled/disabled. 
23573         
23574 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23575
23576         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23577         simpler mechanism: we do not care what is encoded initially
23578         (branch absolute or relative), we care about the code and its
23579         target.  I kept the old code for reference for now.
23580
23581         The new code tries first to determine if the jump is anywhere in
23582         the -/+32 absolute meg range, if it succeeds, it encodes using the
23583         absolute branch;  If not, it tried to find something in the
23584         relative range, if not, it uses the handle_thunk code. 
23585
23586 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23587
23588         * exceptions-ppc.c: use the correct ip register on macosx.
23589
23590 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23591
23592         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23593
23594 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23595
23596         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23597         Raise exception on integer divide by zero by hand since the hw
23598         doesn't support it. Handle NaNs in FP compares.
23599
23600 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23601
23602         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23603         code reducing duplication between the platforms and enabled
23604         signal exception handling (on linux for now).
23605
23606 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23607
23608         * exceptions-ppc.c: more macosx support.
23609
23610 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23611
23612         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23613
23614 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23615
23616         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23617
23618 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23619
23620         * iltests.il: more tests.
23621
23622 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23623
23624         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23625         vars as well.
23626
23627 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23628
23629         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23630
23631 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23632
23633         * liveness.c: Mark variables as volatile in all basic blocks reachable
23634         from exception clauses.
23635
23636 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23637
23638         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23639         inlining.
23640
23641 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23642
23643         * iltests.il, basic.cs: more tests for regalloc.
23644
23645 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23646
23647         * iltests.il: Some tests for register allocation modifications
23648         I have locally.
23649
23650 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23651
23652         * exceptions.cs: Add regression test for bug #56782.
23653
23654         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23655         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23656         the beauty of fixing the same thing in 5 different files...
23657
23658 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23659
23660         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23661         methods.
23662
23663 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23664
23665         * mini.c: Add support for STRWLPARRAY marshalling convention.
23666
23667 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23668
23669         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23670         to init the context to setup the regs pointer).
23671
23672 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23673
23674         * exceptions-ppc.c: more exceptions work.
23675
23676 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23677
23678         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23679         not allowed.
23680
23681 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23682
23683         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23684         can use the memory directly.
23685
23686         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23687
23688         add x86_add_membase, x86_sub_membase, x86_mul_membase
23689
23690 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23691
23692         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23693         GENERAL_REGS they were also hardcoded for all PPC ports.
23694
23695         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23696
23697         Remove hard-coded limit for floating point registers, use
23698         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23699
23700         Notice that in MacOS X calling conventions you can fit a lot more
23701         floating point values in registers, so I should update the PInvoke
23702         test to excercise the passing of floating point values on the
23703         stack (currently broken).
23704         
23705 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23706
23707         * tramp-ppc.c (create_trampoline_code): Added
23708         JUMP_TRAMPOLINE_SIZE. 
23709         (ppc_magic_trampoline): Follow the pattern from
23710         x86_magic_trampoline: if code is set to zero, return. 
23711         (create_trampoline_code): Always pass MonoMethod to the jump
23712         trampoline, before it was passing a null.
23713         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23714         share the code with mono_arch_create_jit_trampoline. 
23715
23716         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23717         implemented.
23718         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23719         implemented.  
23720
23721         * cpu-g4.md: Added length for jmp instruction, the worst case
23722         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23723         for save_lmf).
23724
23725 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23726
23727         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23728
23729 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23730
23731         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23732         before each IL instruction.
23733
23734         * mini.c (CEE_BOX): Fix warnings.
23735
23736 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23737
23738         * mini.c: removed a few unused vars and extra whitespace.
23739
23740 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23741
23742         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23743         checks.
23744         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23745         index.
23746         (OP_GETCHR): use the above
23747         (CEE_LDELEMA): use the above.
23748
23749         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23750         version of the generic impl.
23751         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23752         (CEE_LDELEMA): use the above.
23753
23754 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23755
23756         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23757         Fixes #56317.
23758
23759         * iltests.il: Added new regression test for #56317.
23760
23761 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23762
23763         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23764         under NetBSD. Fixes #56450.
23765
23766         * liveness.c (update_gen_kill_set): Fix previous patch.
23767
23768 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23769
23770         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23771
23772 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23773
23774         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23775         ldsfld and ldsflda.
23776
23777         * inssel-sparc.brg: Add more optimizations.
23778
23779         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23780
23781 2004-04-01  Martin Baulig  <martin@ximian.com>
23782
23783         * mini.c (handle_box): New static function; moved the
23784         implementation of CEE_BOX here.
23785         (mono_method_to_ir): Added `constrained_call' variable.
23786         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23787         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23788         mono_method_get_constrained() to get the method.
23789
23790 2004-04-01  Martin Baulig  <martin@ximian.com>
23791
23792         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23793         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23794         (mono_method_to_ir): We don't need these macros anymore since
23795         mono_class_get_full() already takes care of it. 
23796
23797 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23798
23799         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23800         use @function (as doesn't accept #function here) and check the return
23801         value of system and stop if fails.
23802
23803 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23804
23805         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23806
23807 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23808
23809         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23810
23811         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23812
23813         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23814         #56223.
23815
23816         * basic-long.cs: Add test for negation of Int64.MinValue.
23817
23818 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23819
23820         * mini-sparc.c: Update status.
23821
23822         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23823
23824         * exceptions-sparc.c: Fix return value in filters.
23825
23826         * inssel-sparc.brg: Fix register allocation in some rules.
23827
23828 2004-03-28  Martin Baulig  <martin@ximian.com>
23829
23830         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23831         if neccessary.  
23832
23833 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23834
23835         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23836         
23837         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23838         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23839         remove unused conv_u4 opcode.
23840
23841         * mini-x86.c: Remove valgrind workaround since it slows down things
23842         even when mono is not run under valgrind.
23843
23844 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23845
23846         * mini-sparc.c: Update status.
23847
23848         * inssel-sparc.brg: Add some optimizations.
23849
23850         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23851         future delay slot filling. Add support for varargs, tail calls and JMP.
23852
23853         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23854         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23855
23856         * inssel.brg: Fix register allocation in OP_ARGLIST.
23857
23858         * inssel.brg: Fix warnings.
23859
23860 2004-03-25  Martin Baulig  <martin@ximian.com>
23861
23862         * mini.c (inflate_generic_field): Removed.
23863         (mini_get_method): Removed, use mono_get_method_full(),
23864         (mini_get_class): Removed, use mono_class_get_full().
23865         (mono_method_to_ir): Pass our generic context to
23866         mono_field_from_token().        
23867
23868 2004-03-25  Martin Baulig  <martin@ximian.com>
23869
23870         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23871         of a `MonoMethod *'.
23872         (mini_get_method): Take a `MonoGenericContext *' instead
23873         of a `MonoMethod *'.
23874         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23875         a new local variable called `generic_context' which holds the
23876         current `MonoGenericContext *'; use it to lookup things.
23877
23878 2004-03-24  Martin Baulig  <martin@ximian.com>
23879
23880         * mini.c (mini_get_class): New static method; if we're inside a
23881         generic instance, inflate the class if neccessary.
23882         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23883
23884 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23885
23886         * iltests.il: New regression test for #55976.
23887
23888         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23889         #55976.
23890
23891 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23892
23893         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23894         output.
23895
23896 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23897
23898         * liveness.c: Consider SSA stores as well as loads when making vars
23899         volatile.
23900
23901         * exceptions.cs: New regression tests for register allocation.
23902         
23903 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23904
23905         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23906         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23907           domain lock only to protect puntual access to data structures.
23908           Added access lock for sighash, jit_icall_hash_name, 
23909           jit_icall_hash_addr and domain->code_mp.
23910
23911 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23912
23913         * driver.c: Print SIGSEGV handling method.
23914
23915         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23916
23917         * mini.c (setup_jit_tls_data): Handle case when this is called
23918         multiple times for a thread.
23919
23920         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23921         is different from fbxx_un. Fixes #54303. Also use constants instead of
23922         magic numbers in a lot of places.
23923
23924 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23925
23926         * exceptions.cs: Fix cctor test when --regression is used.
23927
23928 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23929
23930         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23931         for Linux/ppc.
23932
23933 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23934
23935         * inssel-ppc.brg: fixed register assignments for some rules.
23936
23937 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23938
23939         * exceptions.cs: Add test for exceptions in static constructors.
23940
23941         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23942         static constructors outside the domain lock. Fixes #55720.
23943
23944 2004-03-17  Martin Baulig  <martin@ximian.com>
23945
23946         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23947         (inflate_generic_field): Take the `MonoMethod *' instead of the
23948         `MonoClass *' and added support for generic method.
23949         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23950         have a `field->parent->gen_params', only inflate the field if it's
23951         an open constructed type.
23952
23953 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23954
23955         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23956         exception object instead of the preconstructed ones.
23957
23958 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23959
23960         * mini.c: reverted changed to sigsegv_signal_handler commited
23961         accidentally in the previous patch.
23962
23963 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23964
23965         * mini.c:
23966         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23967         running --aot with an old assembly.
23968
23969 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23970
23971         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23972         point values.
23973
23974         * mini-sparc.c: Add support for v9 branches with prediction.
23975
23976 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23977
23978         * mini.c (mini_init): #warning is GNUC only
23979
23980         * mini-sparc.h: implement __builtin_frame_address
23981         and __builtin_return_address for Sun C compiler
23982
23983 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23984
23985         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23986
23987 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23988
23989         * basic-calls.cs: Add test for unaligned byref long argument passing.
23990
23991         * mini-ops.h: Add sparcv9 compare and branch instructions.
23992
23993         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23994         v9 instructions if we have a v9 cpu.
23995
23996         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23997         registers for global allocation.
23998
23999         * exceptions-sparc.c: Fixes.
24000         
24001 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
24002
24003         * liveness.c (mono_analyze_liveness): Optimized version.
24004
24005         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
24006
24007         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
24008         sparc work.
24009
24010         * basic-float.cs basic-calls.cs: New regression tests.
24011
24012 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
24013
24014         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
24015         sigaltstack implementation.
24016
24017         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
24018         
24019         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
24020         stuff if SIGSEGV_ON_ALTSTACK is not defined.
24021
24022 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
24023
24024         * mini.c: Fix warnings.
24025         
24026         * mini.c (mono_resolve_patch_target): New function which contains the
24027         arch independent part of the patching process.
24028
24029         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
24030         patching code to a separate function.
24031
24032 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
24033
24034         * mini.c (add_signal_handler): ifdef out on Windows
24035
24036 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
24037
24038         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
24039         cpu-sparc.md: Add exception handling support + other fixes.
24040
24041         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
24042         typed GC detection in --version.
24043
24044         * basic.cs exceptions.cs: New regression tests.
24045
24046         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
24047         the arch specific code can store data during a compilation.
24048
24049         * mini-ops.h: Add OP_SETFRET.
24050
24051         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
24052         function, register a separate icall for each arity, so the icalls can
24053         get a wrapper.
24054         
24055         * mini.c (mono_print_tree): Print negative offsets in a more readable
24056         form.
24057         
24058         * mini.c: Make signal handling work on sparc.
24059         
24060         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
24061
24062         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
24063
24064         * jit-icalls.c: Emulate truncl by aintl on solaris.
24065
24066         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
24067
24068 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
24069
24070         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
24071
24072 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
24073
24074         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
24075         a MarshalByRef type, inline a method that performs the check, taking into
24076         account that the object can be a proxy. Also implemented tow new opcodes:
24077         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
24078         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
24079         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
24080
24081 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
24082
24083         * mini-ppc.c: if a relative branch displacement is too big
24084         but it points to and area reachable with an absolute branch, 
24085         avoid the thunks.
24086
24087 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
24088
24089         * mini.c: optimize small copies in cpblk.
24090
24091 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
24092
24093         * basic-calls.cs basic-float.cs: New regression tests.
24094
24095         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
24096         negative offsets from %fp. Implement localloc. Fix local register 
24097         allocation. Fix the case when the this argument needs to be saved to
24098         the stack. Implement some missing opcodes.
24099
24100 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
24101
24102         * mini.c (mini_method_compile): Reenable global regalloc in methods
24103         with exception handlers.
24104
24105         * linear-scan.c (mono_varlist_sort): Fix warning.
24106
24107         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
24108
24109         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
24110         regalloc costs.
24111
24112         * liveness.c: Make all variables uses in exception clauses volatile, to
24113         prevent them from being allocated to registers. Fixes #42136.
24114
24115 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
24116
24117         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
24118         causes regressions.
24119
24120         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
24121         argument to mono_arch_regalloc_cost.
24122
24123         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
24124         precisely.
24125
24126 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
24127
24128         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
24129         Make the cost of allocating a variable to a register arch dependent.
24130
24131         * basic-calls.cs: Fix compilation of tests.
24132         
24133         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
24134         helper function to cut back on the number of #ifdefs needed.
24135
24136         * mini-ppc.c: Fix compilation.
24137
24138         * basic-calls.cs: New regression tests.
24139
24140         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
24141
24142         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
24143         of l0 since that is callee saved.
24144
24145         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
24146         to virtual calls.
24147
24148         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
24149         of delay instruction.
24150
24151         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
24152
24153         * mini.h (MonoCallInst): Add 'virtual' flag.
24154
24155         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
24156
24157 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
24158
24159         * *.cs: New regression tests.
24160
24161         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
24162         work.
24163
24164         * mini.c (mono_runtime_install_handlers): Fix build.
24165
24166         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
24167         'signal_stack_size' members.
24168
24169         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
24170         alternate signal stack.
24171
24172         * exceptions-x86.c: Add stack overflow handling.
24173
24174         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
24175         functions to arch independent code.
24176
24177         * mini.c (mono_print_tree): Print more detailed info for load_membase
24178         opcodes.
24179         
24180 2004-02-23  Martin Baulig  <martin@ximian.com>
24181
24182         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
24183
24184 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
24185
24186         * mini-x86.c: fixed reg allocation for div/rem.
24187
24188 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
24189
24190         * driver.c (mono_main): Report some configuratio options on --version.
24191
24192 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
24193
24194         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
24195         low in the address space. Correctly flush memory in thunks where we
24196         output native code.
24197
24198 2004-02-20  Martin Baulig  <martin@ximian.com>
24199
24200         * mini.c (mini_get_method): New static method; inflate all generic
24201         methods and methods in open generic instances.
24202         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
24203         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
24204
24205 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24206
24207         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
24208
24209         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24210
24211 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24212
24213         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24214
24215         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24216         it compile using Sun's compiler.
24217
24218 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24219
24220         * 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.
24221
24222         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24223
24224 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24225
24226         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24227         code.
24228         * mini-ppc.c: handle calls outside of the allowed range with thunks
24229         allocated using the code manager.
24230         * tramp-ppc.c: use the code manager to hold generated native code.
24231         Fixed the magic trampoline to just patch vtable entries.
24232
24233 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24234
24235         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24236         independent file.
24237
24238 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24239
24240         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24241         PPC.
24242
24243         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24244         if we have a working __thread implementation.
24245
24246         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24247         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24248
24249 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24250
24251         * mini-x86.c: Fix compilation under gcc 2.
24252         
24253 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24254
24255         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24256         contains a call to the wrapped function.
24257
24258         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24259         OP_<CALL>_IMM opcodes, and use them under X86.
24260         
24261         * mini.c (mono_jit_find_compiled_method): Fix warning.
24262
24263         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24264
24265         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24266
24267         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24268         functionality to mini.c.
24269
24270         * mini.c (mono_create_jump_trampoline): New function to create a jump
24271         trampoline. Return a compiled method instead of a trampoline if it
24272         exists. Add a cache for jump trampolines.
24273
24274         * mini.c (mono_jit_find_compiled_method): New function to return a
24275         compiled method if it exists.
24276
24277         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24278         mono_arch_create_jit_trampoline.
24279
24280         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24281         a jump trampoline. Fixes #52092.
24282         
24283 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24284
24285         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24286         which is not up-to-date. Add check_corlib_version () instead.
24287
24288         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24289         have to call it.
24290         
24291         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24292         since newer valgrind versions do not need it.
24293
24294         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24295         compile a method with a given set of optimizations.
24296
24297         * mini.c: Compile icall wrappers on-demand instead of at startup.
24298
24299         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24300         wrapper for an icall.
24301
24302 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24303
24304         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24305         #54063.
24306
24307         * iltests.il: Add test for non-empty stack before switch instruction.
24308
24309 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24310
24311         * mini.c: Add support for new stringbuilder marshalling conventions.
24312
24313         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24314
24315 2004-02-01  Martin Baulig  <martin@ximian.com>
24316
24317         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24318         in `ginst->mtype_argv'.
24319
24320 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24321
24322         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24323         facilitate grepping.
24324
24325 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24326
24327         * mini.c: fixed buglet in initobj generic implementation for references.
24328
24329 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24330
24331         * Makefile.am: make the version script conditional.
24332         * jit-icalls.c: handle missing truncl().
24333
24334 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24335
24336         * exceptions.cs: Add more tests for double->int conversion.
24337
24338         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24339         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24340
24341 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24342
24343         * driver.c: make --verbose --version emit an error
24344         if the loaded corlib doesn't match the runtime version.
24345
24346 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24347
24348         * mini-ppc.h: export ppc_patch().
24349         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24350         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24351         on par or better than on MacOSX.
24352
24353 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24354
24355         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24356         mono_lookup_pinvoke_call.
24357
24358         * mini-x86.c: Under windows, the default pinvoke calling convention is
24359         stdcall. Fixes #52834.
24360
24361         * mini.c (optimize_branches): Add an upper bound to the number of
24362         iterations to prevent infinite loops on strange loops. Fixes #53003.
24363
24364 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24365
24366         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24367         and ISINST. Fixes #52093.
24368
24369         * objects.cs (test_0_vector_array_cast): New tests.
24370         
24371 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24372
24373         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24374         checking in Array.Set ().
24375
24376         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24377         #52590.
24378
24379         * object.cs (test_0_multi_array_cast): New regression test.
24380
24381 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24382
24383         * exceptions-ppc.c: fix build on Linux/PPC.
24384
24385 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24386
24387         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24388         running under valgrind.
24389         (x86_magic_trampoline): Fix build bustage.
24390
24391         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24392         negative values as well. This is needed for the encoding of the line number
24393         info, since sometimes the line numbers are not in increasing order.
24394
24395 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24396
24397         * cpu-pentium.md (localloc): Increase the size of the localloc 
24398         instruction since it is a loop under Win32.
24399
24400         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24401         allocation.
24402
24403 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24404
24405         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24406         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24407         Max Horn (max@quendi.de). Fix file names in comments.
24408
24409 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24410
24411         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24412         avoid stack overflow.
24413         (replace_usage): Avoid uninitialized variable warnings.
24414
24415         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24416         and taking the address of valuetype variables.
24417
24418 2004-01-03  Patrik Torstensson
24419
24420         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24421         for other purposes than FP later on.
24422
24423 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24424
24425         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24426         of tail calls.
24427
24428 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24429
24430         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24431
24432 2003-12-30  Patrik Torstensson <p@rxc.se>
24433
24434         * mini-x86.h: Decreased number of availiable fp regs.
24435         Solves corner cases with FP spilling.
24436
24437 2003-12-23  Patrik Torstensson <p@rxc.se>
24438
24439         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24440         for floating point stack tracking / spilling on x86. 
24441         Fixes bug #49012.
24442         
24443         * basic-float.cs: added float mul overflow test.
24444
24445 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24446
24447         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24448
24449 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24450
24451         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24452         supports for cond branches that overflow the immediate
24453         overflow offset. mcs can compile simple programs.
24454
24455 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24456
24457         * exceptions-ppc.c: exception handling support wip:
24458         finally handlers get run on exception.
24459
24460 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24461
24462         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24463         profiling.
24464
24465 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24466
24467         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24468         initial support for stack walking and unwinding.
24469
24470 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24471
24472         * driver.c (mono_main): Make corlib-out-of-sync message more 
24473         descriptive. Also remove verify_corlib call.
24474
24475 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24476
24477         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24478         not overlap with other call's arguments, too.
24479
24480 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24481
24482         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24483         move to arch-specific code the choice of arch-specific
24484         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24485         * mini.c: ensure emulation calls will not interleave
24486         with other calls.
24487
24488 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24489
24490         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24491         the magic trampoline stack frame is dropped before executing
24492         the new method.
24493
24494 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24495
24496         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24497         and integer to fp conversions. Added support for overflowing
24498         arguments on the stack. Reserve a couple more registers as temps.
24499         Added support for aot compilation (as output still needs to be
24500         tweaked, though).
24501
24502 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24503
24504         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24505         Don't overwrite return register in some corner cases.
24506
24507 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24508
24509         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24510         static constructors when AOT compiling.
24511
24512         * driver.c (mono_main): Call mono_check_corlib_version.
24513
24514 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24515
24516         * cpu-g4.md, basic.cs: fixed div target register.
24517
24518 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24519
24520         * mini-ppc.c, basic.cs: shl_imm fix with test.
24521
24522 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24523
24524         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24525         structures by value. Misc fixes.
24526         * objects.cs: more tests.
24527
24528 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24529
24530         * mini-ppc.c: lconv.ovf.i implemented.
24531
24532 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24533
24534         * mini.c:
24535         (mini_init): don't error out if someone already called g_thread_init.
24536
24537 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24538
24539         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24540         to be any type per the spec. Fix abnormal memory usage when
24541         the same object is repeatedly thrown.
24542
24543 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24544
24545         * mini.c: check for overruns in IL code.
24546
24547 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24548
24549         * TODO: Add/remove some todo entries.
24550
24551 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24552
24553         * driver.c (mono_main): Call mono_verify_corlib.
24554
24555 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24556
24557         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24558         This has been moved to mini.c
24559         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24560         type being casted is marshalbyref it could be a proxy, so instead of
24561         emitting the type check code, emit a call to a runtime method that will
24562         perform the check by calling CanCastTo if needed.
24563
24564 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24565
24566         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24567         methods with large stack frames under Win32.
24568
24569 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24570
24571         * Makefile.am: Distribute regression tests.
24572
24573         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24574         at the end instead of inserting each variable into the sorted list.
24575
24576         * linear-scan.c (mono_varlist_sort): New helper function.
24577         
24578 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24579
24580         * mini.c: ensure arguments and locals are within bounds.
24581
24582 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24583
24584         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24585         related fixes.
24586
24587 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24588
24589         * mini.c (mono_cprop_copy_values): Fix crash.
24590
24591         * aot.c: Set verbosity back to 0.
24592         
24593 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24594
24595         * regalloc.c: complete memory leak fix by Laurent Morichetti
24596         (l_m@pacbell.net).
24597
24598 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24599
24600         * driver.c (main_thread_handler): Revert the previous patch.
24601
24602         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24603         under valgrind.
24604
24605         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24606         memory from the memory pool.
24607
24608         * driver.c (main_thread_handler): Turn on all optimizations when
24609         --aot is used.
24610
24611         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24612         an array for better performance.
24613
24614         * regalloc.c (mono_regstate_assign): Fix memory leak.
24615
24616         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24617         serialize the debug info.
24618
24619         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24620         debug info from the serialized representation.
24621
24622         * aot.c: Save debug info into the generated file and load it when 
24623         loading a method.
24624
24625         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24626
24627 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24628
24629         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24630         More FP-related fixes.
24631
24632 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24633
24634         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24635         and register allocation buglet. Hello world now runs.
24636
24637 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24638
24639         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24640         * tramp-ppc.c: fixed class init trampoline.
24641         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24642
24643 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24644
24645         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24646         mini.c: more ppc changes/fixes.
24647
24648 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24649
24650         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24651         Also optimize the case when the arguments are the same in the caller 
24652         and in the callee.
24653
24654         * iltests.il: Add tests for tail calls with valuetype arguments.
24655
24656 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24657
24658         * mini-ppc.c: fixes for struct return type.
24659
24660 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24661
24662         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24663         mono_spillvar_offset() to arch-specific code.
24664
24665 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24666
24667         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24668
24669 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24670
24671         * exceptions-x86.c: Fix stack space leaks.
24672         
24673         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24674         registers from the lmf if the method has save_lmf set.
24675
24676 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24677
24678         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24679         of icall wrappers into InvokeInDomain, since these are now per-domain.
24680
24681 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24682
24683         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24684         make some opcode emulation and intrinsic ops enabled/disabled 
24685         according to the architecture. More fixes.
24686
24687 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24688
24689         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24690
24691 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24692
24693         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24694         arch-specific handling for 'this' and struct return type to
24695         arch-specific code.
24696
24697 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24698
24699         * aot.c: prevent divide by zero error when reporting (it happened with
24700         Accessibility.dll).
24701
24702 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24703
24704         * mini.h (inst_switch): Remove unused macro.
24705
24706 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24707
24708         * aot.c:
24709         (load_aot_module): free 'info->methods' and 'info' properly. No more
24710         "free(): invalid pointer blah" messages when you have an old aot
24711         compiled assembly.
24712
24713 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24714
24715         * jit-icalls.c, mini.c: Added support for context static fields.
24716
24717 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24718
24719         * mini.c (mono_method_blittable): Methods which set LastError are not 
24720         blittable either. Fixes #51108.
24721         
24722 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24723
24724         * mini.c: flush icache.
24725         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24726
24727 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24728
24729         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24730
24731 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24732
24733         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24734         safe on IA32.
24735
24736         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24737         vararg calls.
24738
24739         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24740
24741 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24742
24743         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24744         instruction when the result is discarded.
24745
24746         * iltests.il (test_0_div_regalloc): New regression test.
24747
24748         * arrays.cs: Fix compilation error.
24749
24750 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24751
24752         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24753         float rules to inssel-x86.brg: sane architectures with FP registers
24754         don't need to implement these rules.
24755
24756 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24757
24758         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24759
24760 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24761
24762         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24763         implementation of 32 bit systems.
24764
24765 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24766
24767         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24768         (Jeroen Zwartepoorte).
24769
24770 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24771
24772         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24773         the caller and the callee matches.
24774         
24775         * mini.c (mono_method_to_ir): Add comment.
24776
24777         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24778         signbit is missing on some platforms.
24779
24780 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24781
24782         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24783
24784         * mini.c (setup_jit_tls_data): Call the new function.
24785         
24786         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24787
24788         * mini-x86.c: Add experimental support for fast access to the lmf
24789         structure under NPTL/Linux 2.6.x.
24790
24791 2003-11-06  Martin Baulig  <martin@ximian.com>
24792
24793         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24794         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24795         the debugger.
24796
24797 2003-11-02  Martin Baulig  <martin@ximian.com>
24798
24799         * mini.c (inflate_generic_field): New static method.
24800         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24801         generic instance and the field is declared in a generic type, call
24802         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24803
24804 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24805
24806         * mini.h mini.c (mono_method_same_domain): New function to return
24807         whenever the caller and the callee are in the same domain.
24808
24809         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24810
24811 2003-10-30  Martin Baulig  <martin@ximian.com>
24812
24813         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24814         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24815         method parameters.
24816         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24817         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24818
24819 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24820
24821         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24822         propagation.
24823
24824         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24825         object here, so it is in the correct appdomain etc.
24826
24827 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24828
24829         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24830         already done.
24831         (mono_method_to_ir): Avoid freeing the type created returned from
24832         mono_type_create_from_typespec, since it is put into an internal cache
24833         by the function. Fixes pointer.exe.
24834
24835         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24836         trampolines for icalls and pinvokes as well. Fixes #33569.
24837
24838 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24839
24840         * mini.c: Update after appdomain changes.
24841
24842         * mini.c (mono_jit_compile_method_inner): Allways compile native
24843         method wrappers in the root domain, since there can only be one
24844         instance of them, whose address is stored in method->info.
24845
24846 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24847
24848         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24849         environment variable. Instead detect automatically whenever running
24850         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24851         valgrind.h.
24852
24853 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24854
24855         * trace.c, trace.h: New files that implement the new trace option
24856         parsing. 
24857
24858         * driver.c: Document new --trace options.
24859
24860         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24861         mini-x86.c: Apply:
24862
24863         -       if (mono_jit_trace_calls)
24864         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24865
24866         * mini.h: prototypes.
24867         
24868 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24869
24870         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24871
24872         * mini.c inssel.brg: Implement typedefbyref opcodes.
24873
24874         * mini.c (mono_jit_compile_method): Remove unused local variable.
24875
24876         * mini.c (mono_jit_compile_method_inner): Ditto.
24877         
24878 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24879
24880         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24881         
24882         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24883
24884 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24885
24886         * mini.c (mono_no_aot): Remove unused global variable.
24887
24888         * mini.c: Thread safety fixes.
24889
24890 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24891
24892         * mini.c (mono_create_class_init_trampoline): Add a lock around
24893         class_init_hash_addr.
24894
24895         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24896         #30073.
24897
24898         * mini.c: Decompose the NEWARR instruction before decomposing its
24899         arguments. Fixes #30073.
24900
24901 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24902
24903         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24904         convention.
24905
24906 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24907
24908         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24909
24910         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24911
24912         * driver.c: Add support for compiling icall wrappers to --compile.
24913
24914 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24915
24916         * inssel.brg: The empty value in class->interface_offsets is -1, not
24917         0. Fixes #49287.
24918
24919 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24920
24921         * objects.cs: New test for 'is' operator on an array of interfaces.
24922
24923 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24924
24925         * tramp-ppc.c: update trampoline code to support jumps
24926         and class initialization.
24927
24928 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24929
24930         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24931
24932         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24933
24934         * inssel.brg (OP_UNBOX): Remove unused rule.
24935
24936         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24937         region instead of one for each method. Fixes #47813.
24938
24939 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24940
24941         * exceptions.cs (test_0_nested_finally): New regression test for
24942         nested exception handlers.
24943
24944         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24945
24946         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24947
24948         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24949         inlining.
24950
24951         * mini.c (mono_method_check_inlining): Make the inlining limit 
24952         configurable by an environment variable.
24953         
24954         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24955
24956         * mini.h: Bump AOT file version.
24957
24958         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24959         token, store the image along with the token, since the token might not 
24960         refer to the same image as the method containing the relocation, 
24961         because of inlining.
24962
24963 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24964
24965         * mini.c (mono_precompile_assemblies): New function to compile
24966         all methods in all loaded assemblies.
24967
24968         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24969
24970         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24971         iassign and fassign to int*, since they can contain large negative
24972         values if the register is spilled. Also added some comments. Fixes
24973         #45817.
24974
24975         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24976         under Win32. Fixes #42964.
24977
24978 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24979
24980         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24981
24982         * aot.c: Added support for AOT compiling methods which contain calls
24983         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24984         handled.
24985         
24986         * driver.c (compile_all_methods): Run the compilation in a thread
24987         managed by mono. Fixes #44023.
24988
24989         * mini.c (mono_codegen): Print full method name in verbose output.
24990
24991         * mini-x86.c (mono_arch_patch_code): Fix warning.
24992         
24993         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24994         jumps, since the method we are jumping to might be domain-specific.
24995
24996         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24997
24998 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24999
25000         * inssel.brg: string chars are unsigned.
25001
25002 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
25003
25004         * TODO: New todo item.
25005
25006         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
25007         which calls mono_runtime_class_init and patches the call site to
25008         avoid further calls.
25009         (mono_arch_create_class_init_trampoline): New arch specific function 
25010         to create a class init trampoline.
25011         (create_trampoline_code): Generalized so it can create
25012         class init trampolines as well.
25013
25014         * mini.c (helper_sig_class_init_trampoline): New helper variable.
25015         (mono_create_class_init_trampoline): New function to create and cache
25016         class init trampolines.
25017         (mono_find_class_init_trampoline_by_addr): New function to lookup the
25018         vtable given the address of a class init trampoline. Used by the
25019         patching process.
25020         (mono_codegen): Generate a call to a trampoline instead of
25021         mono_runtime_class_init in LDSFLD[A].
25022         (mono_codegen): Add relocations for the new trampoline.
25023         
25024         * mini.h mini-x86.c aot.c: Added a new relocation type: 
25025         MONO_PATCH_INFO_CLASS_INIT.
25026
25027         * mini.h: Bump AOT version number.
25028
25029         * aot.c: Create a copy of the loaded code instead of using the original
25030         so methods which call each other will be close in memory, improving
25031         cache behaviour.
25032         
25033         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
25034         patch since it breaks the regression tests.
25035         
25036         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
25037         for the register saving instruction sequence since the 
25038         frame_state_for function in glibc 2.3.2 don't seem to detect it.
25039
25040 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
25041
25042         * TODO: Fix todo item && remove another.
25043
25044 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
25045
25046         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
25047         previous checkin.
25048
25049         * aot.c: Moved the check for MONO_LASTAOT into the initialization
25050         function of the module.
25051
25052         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
25053         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
25054         --no-aot command line option.
25055
25056 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
25057
25058         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
25059         by Bernie Solomon (bernard@ugsolutions.com).
25060
25061         * inssel.brg: Refactor the interface offset table related code into
25062         its separate functions and add support for the AOT case.
25063
25064 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
25065
25066         * aot.c (mono_aot_get_method_inner): Fix memory leak.
25067         
25068         * aot.c: Added mono_aot_verbose variable and made all debugging
25069         output depend on the value of this variable.
25070
25071         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
25072         method_label and info_label.
25073
25074         * mini.h mini-x86.c aot.c: Added a new relocation type 
25075         MONO_PATCH_INFO_IID for klass->interface_id.
25076
25077         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
25078         the MonoJitInfo structure.
25079
25080         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
25081         a non-root appdomain in shared mode.
25082
25083 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25084
25085         * aot.c: make aot loader less verbose. Remove free of unused variable.
25086
25087 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25088
25089         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
25090
25091         * .cvsignore: Added *.dll.
25092
25093         * mini.c (mono_print_tree_nl): New function callable while debugging.
25094
25095         * mini.c (mono_print_code): Export this.
25096
25097         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
25098         patched code.
25099
25100 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
25101
25102         * mini.h (MonoCompile): Added 'jit_info' field.
25103
25104         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
25105         the cfg structure, since it is needed by the AOT compiler.
25106
25107         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
25108
25109         * aot.c: A major rewrite. Changes include:
25110         - save exception tables for methods which have them.
25111         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
25112         to g_module_symbol.
25113         - reworked the file format so it is now much smaller and needs
25114         fewer relocation entries.
25115         
25116 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25117
25118         * aot.c (load_aot_module): Fix build bustage on platforms without
25119         Boehm GC.
25120
25121 2003-09-04  Martin Baulig  <martin@ximian.com>
25122
25123         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
25124
25125 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25126
25127         * TODO: Some new optimization ideas.
25128
25129         * aot.c: Move AOT module loading logic here from mono_assembly_open.
25130
25131         * aot.c: Save the optimization flags used to compile the code into
25132         the AOT module.
25133
25134         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
25135         support emitting domain specific code.
25136         
25137         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
25138         no longer domain neutral. It can be made domain neutral by compiling 
25139         with --optimize=shared.
25140
25141         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
25142         between appdomains.
25143
25144         * driver.c mini.h mini.c: New --no-aot debugging option which disables
25145         loading of AOT code.
25146
25147         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
25148         
25149         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
25150         if there is no domain neutrality information.
25151
25152 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25153
25154         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
25155         format version into the generated library.
25156
25157         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
25158         callee method into the caller since one of them could be shared.
25159
25160         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
25161         system exceptions from AOT code now works.
25162
25163         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
25164         method if it is domain neutral and the callee is not.
25165
25166         * graph.c (cfg_emit_one_loop_level): Fix warning.
25167
25168 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25169
25170         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
25171         last checkin.
25172
25173 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25174
25175         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
25176         is needed  by code which is executed before mono_runtime_init ().
25177         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
25178         
25179         * mini.c (mono_thread_abort): Fix warning.
25180         (mono_jit_compile_method): Call static constructor in the AOT case too.
25181
25182         * aot.c (mono_compile_assembly): Fix warning.
25183
25184 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25185
25186         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
25187
25188 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
25189
25190         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
25191
25192         * cpu-pentium.md: Fix the length of call opcodes so they include the
25193         ESP restoring instruction. Fixes #47968.
25194
25195 2003-08-28  Martin Baulig  <martin@ximian.com>
25196
25197         * mini-x86.c (mono_arch_call_opcode): Added support for
25198         MONO_TYPE_GENERICINST.
25199
25200         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
25201
25202 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25203
25204         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
25205         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
25206
25207         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
25208         metadata_section.
25209
25210 2003-08-26  Martin Baulig  <martin@ximian.com>
25211
25212         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25213         when reporting an error, set this to the actual error location.
25214         (mono_method_to_ir): Report the correct error location if
25215         get_basic_blocks() returned an error.
25216
25217 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25218
25219         * mini.c (mono_type_blittable): OBJECT is not blittable.
25220         (mono_method_blittable): Methods which have marshalling descriptors
25221         are not blittable either. Fixes #47842.
25222
25223 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25224
25225         * driver.c mini.c: Use an environment variable instead of a global 
25226         variable. Also fix the build.
25227
25228         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25229         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25230         reporting this. 
25231
25232         * driver.c mini.c: Added --with-valgrind option to turn off some
25233         code which prevents mono from running under valgrind.
25234
25235         * mini.c (mono_emit_call_args): Fixed warning.
25236
25237         * mini.c (mono_emulate_opcode): Fixed warning.
25238
25239 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25240
25241         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25242         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25243         regalloc.c, regalloc.h: specify available registers in arch-specific
25244         code and support floats in the regallocator (patch by Laurent Morichetti 
25245         <l_m@pacbell.net>)
25246
25247 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25248
25249         * mini.c: mono_thread_current() can be called only after
25250         mono_runtime_init(): rearrange code to not call it early on.
25251
25252 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25253
25254         * mini.c: allocate jump tables in the code mempools.
25255
25256 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25257
25258         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25259         freed.
25260
25261 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25262
25263         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25264         12 to 16.  This fixes bug #47453.
25265
25266
25267 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25268
25269         * mini-ppc.c: fixed indexed load and unsigned compares.
25270
25271 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25272
25273         * mini.c: reenabled installation of handler for
25274           thread abort signal.
25275
25276 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25277
25278         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25279         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25280         until it's fixed and actually useful.
25281
25282 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25283
25284         * inssel-long32.brg: couple more opcodes implemented.
25285
25286 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25287         
25288         * mini-sparc.c: Even more opcodes implemeted.
25289
25290 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25291
25292         * mini-sparc.c: More opcodes implemented.
25293
25294 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25295
25296         * mini-sparc.c: More opcodes implemented.
25297
25298 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25299
25300         * inssel-sparc.brg: Add some needed rules.  Direct
25301         copy from PPC.
25302         * Makefile.am: Use inssel-sparc.brg
25303         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25304         an assert happy for now.
25305
25306 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25307
25308         * mini-sparc.c: Fixed compile errors.
25309         * exceptions-sparc.c: Same.  We now produce a mono binary 
25310         on sparc-linux.  Yea.
25311
25312 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25313
25314         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25315         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25316         They compile, but do not work.
25317
25318 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25319
25320         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25321         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25322         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25323         (ct@gentoo.org).
25324
25325 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25326
25327         * mini.c: more opcodes implemented and better support for generics.
25328
25329 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25330
25331         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25332         * mini.c, mini.h: first cut at generics support: some new instructions 
25333         added and changed the behaviour of some of the existing ones.
25334
25335 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25336
25337         * mini.c: Removed definition of metadata_shared mutex here.
25338
25339 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25340
25341         * mini-x86.c: make vararg calls work for instance methods.
25342
25343 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25344
25345         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25346         returns the arguments in a separte list, now.
25347
25348 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25349
25350         * aot.c, mini.c: updates for array type representation changes.
25351
25352 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25353
25354         * mini.c: register function to perform jit shutdown.
25355
25356 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25357
25358         * mini.c: use a faster allocator if possible.
25359
25360 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25361
25362         * aot.c: some cleanups and portability changes.
25363
25364 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25365
25366         * mini.c: use faster allocation for CEE_BOX if possible.
25367
25368 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25369
25370         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25371         Moved inlined mempcy code to its own function so that is can be
25372         reused. Added an inline memset function as well (optimized initobj).
25373         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25374
25375 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25376
25377         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25378
25379 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25380
25381         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25382         arch code can setup the cpu for CLR execution, if needed.
25383         We use it on x86 to set the precision of FP operations.
25384
25385 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25386
25387         * mini.c: disable some optimizations if we can guess they'll cost too
25388         much for a given method.
25389
25390 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25391
25392         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25393         
25394 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25395         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25396         info collection support.
25397
25398 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25399
25400         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25401         is now implemented in the profiling API. Get rid of a couple of
25402         unnecessary global variables.
25403
25404 2003-06-15  Nick Drochak <ndrochak@gol.com>
25405
25406         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25407         * cpu-g4.md: add op_bigmul and op_bigmul_un
25408         * cpu_pentium.md: add op_bigmul_un
25409         * inssel-long32.brg: add rule for unsigned bigmul
25410         * mini-ops.h: define OP_BIGMUL_UN
25411         * mini-x86.c: THE BUG: handle (un)signed properly
25412         * mini.c: choose unsigned opcode if needed.
25413         This set of patches fixes bug #44291
25414
25415 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25416
25417         * mini.c (optimize_branches): improved to handle all kinds of
25418         conditional branches.
25419
25420 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25421
25422         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25423         don't raise exceptions.
25424
25425 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25426
25427         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25428         to arch-specific files.
25429
25430 2003-06-09  Martin Baulig  <martin@ximian.com>
25431
25432         * Makefile.am (libs): Added $(LIBGC_LIBS).
25433
25434 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25435
25436         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25437         and OP_ATAN (fixes bug#44293).
25438
25439 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25440
25441         * Makefile.am, mini-x86.c: rename cpu description array to
25442         pentium_desc, since some compilers define the 'pentium' preprocessor
25443         symbol.
25444
25445 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25446
25447         * mini.c (mini_select_instructions): add explicit branch if the
25448         following block is not the false target of a conditional branch -
25449         we need this with any optimization that reorder or remove bblocks
25450
25451         * mini.c (optimize_branches): bug fixes
25452
25453 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25454
25455         * mini.c (mono_method_to_ir): inline static readonly fields
25456
25457         * ssa.c (fold_tree): start cfold support for long (very simple
25458         cases only)
25459
25460         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25461
25462 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25463
25464         * inssel.brg: fixed memcpy (bug #44219).
25465
25466 2003-06-05  Dick Porter  <dick@ximian.com>
25467
25468         * driver.c: Set the glib log levels to not abort if g_message
25469         recurses.
25470
25471         g_set_prgname() has to happen before mini_init() so that the
25472         process handle gets the info.
25473         
25474 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25475
25476         * driver.c: add intrins to the default optimizations to get wider
25477         exposure.
25478
25479 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25480
25481         * mini.h: some large basic blocks will overflow a 16-bit
25482         integers for symbolic registers.
25483
25484 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25485
25486         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25487         (mono_arch_output_basic_block): fix bug 43499 
25488
25489 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25490
25491         * mini.c: kill duplicated definition of mono_debug_format.
25492
25493 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25494
25495         * mini-x86.c, arrays.cs: fixed register allocation bug.
25496
25497 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25498
25499         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25500
25501         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25502
25503 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25504
25505         * mini.c:
25506         (print_method_from_ip): also print source location information if
25507         available.
25508
25509 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25510
25511         * mini.c (mono_find_block_region): bug fix in region code
25512         (mini_method_compile): enable removing unreachable code again, but
25513         only in methods without exception clauses.
25514
25515 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25516
25517         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25518         Implemented arglist opcode and handling of TypedReference type.
25519         Fixed x86 call convention when a structure is returned.
25520         Minimal support for calling static vararg methods.
25521
25522 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25523
25524         * mini.c (mini_method_compile):  always remove unreachable code,
25525         because the code in them may be inconsistent  (access to dead
25526         variables for example).
25527
25528 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25529
25530         * driver.c, debug-mini.c: warning fixes.
25531
25532 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25533
25534         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25535
25536 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25537
25538         * mini.c: thread-static fields are registered in mono_class_vtable(),
25539         so ensure the function is called before checking for them.
25540
25541 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25542
25543         * mini.c (optimize_branches): fix for bug 43586
25544
25545         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25546         overflow (fixes Bug #43639)
25547
25548 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25549
25550         * mini.c, objects.cs: allow the use of stobj for primitive types.
25551
25552 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25553
25554         * mini.c: be less strict about argument checking until we support
25555         running the verifier.
25556
25557 2003-05-27  Nick Drochak <ndrochak@gol.com>
25558
25559         * basic-long.cs: tests for (ulong)int * (ulong)int also
25560         * mini.c: use the same trick for (ulong)int * (ulong)int
25561
25562 2003-05-27  Nick Drochak <ndrochak@gol.com>
25563
25564         * basic-long.cs: add regression test for (long)int * (long)int
25565         * cpu-pentium.md: add op_bigmul specification
25566         * inssel-long32.brg: add OP_BIGMUL rule
25567         * mini-ops.h: add OP_BIGMUL
25568         * mini-x86.c: register allocator: handle case where src1 needs to be
25569         in EAX.
25570         * mini.c: substitute special BIGMUL opcode in the tree for 
25571         (long)int * (long)int
25572
25573 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25574
25575         * jit-icalls.c: call the type ctor on field access if needed.
25576
25577 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25578
25579         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25580         to a method (including results of ldelema, bug#43207).
25581
25582 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25583
25584         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25585         colors to show exception handler blocks.
25586
25587         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25588         (fix for pinvoke7.cs).
25589
25590 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25591
25592         * mini.h, mini.c: ensure correct initialization order for types that
25593         require it. Prepare for lazy compilation of jit icall wrappers.
25594         Provide a name for opcode emulation to reduce unneeded mallocing.
25595
25596 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25597
25598         * mini-x86.c: better register restoring code and profiling
25599         support for tail calls.
25600
25601 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25602
25603         * mini.h, driver.c: prepare for leaf methods optimization.
25604
25605 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25606
25607         * mini.c: get targets of branches before converting a method.
25608
25609 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25610
25611         * mini.c (optimize_branches): added some experimental code (disbaled) 
25612
25613 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25614
25615         * mini.c (optimize_branches): fix branch to branch optimization 
25616
25617         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25618
25619         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25620
25621         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25622
25623         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25624         if needed.
25625
25626 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25627
25628         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25629         enable use of interface variables again.
25630
25631         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25632         I1 to registers because there is no simply way to sign extend 8bit
25633         quantities in caller saved registers on x86.
25634
25635         * inssel-float.brg: set costs of some rules to 2 so
25636         that monobure always select the arch. specific ones if supplied,
25637         regardless of the order we pass the files to monoburg.
25638
25639 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25640
25641         * mini.c, mini-x86.c: since the magic trampoline for jumps
25642         can't patch the code directly, we do it as soon as the
25643         method gets compiled.
25644
25645 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25646
25647         * mini-x86.c, mini.h: introduce a new patching method
25648         to support CEE_JMP and tail calls.
25649         * mini.c: obey tail.call. Don't precompile methods target
25650         of CEE_JMP.
25651         * tramp-x86.c: new trampoline code to handle methods
25652         reached through a jump.
25653
25654 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25655
25656         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25657         bit values to registers
25658
25659 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25660
25661         * mini.c (mono_compile_get_interface_var): share interface
25662         variables if possible.
25663
25664 2003-05-16  Martin Baulig  <martin@ximian.com>
25665
25666         * debug-mini.c (mono_init_debugger): New function to initialize
25667         the debugger.  This is not in the debugger since it needs to
25668         access some of mini's internals.
25669
25670 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25671
25672         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25673
25674 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25675
25676         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25677         for value type handling.
25678
25679 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25680
25681         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25682         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25683
25684 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25685
25686         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25687           the constructor through a proxy.
25688
25689 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25690
25691         * jit-icalls.c, inssel.brg: fixes to array element address
25692         calculations.
25693
25694 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25695
25696         * mini-x86.c (is_regsize_var): allocate pointer to registers
25697
25698 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25699
25700         * driver.c: fixed typo, added intrins to the set of optimizations
25701         tested with regressions.
25702
25703 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25704
25705         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25706         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25707         test case.
25708
25709 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25710
25711         * inssel.brg: remove some common pop instructions without side effects
25712
25713 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25714
25715         * inssel-x86.brg: fixed thinko in int to double conversions.
25716
25717 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25718
25719         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25720
25721 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25722
25723         * inssel-long32.brg: two more missing instructions.
25724
25725 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25726
25727         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25728         if not already set.
25729
25730 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25731
25732         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25733         correctly.
25734
25735         * basic-float.cs: Added tests for negative zero.
25736
25737 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25738
25739         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25740         a couple of missing operations for long casts, with test cases.
25741
25742 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25743
25744         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25745
25746 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25747
25748         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25749         code size estimation.
25750
25751 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25752
25753         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25754         abstract methods (fix bug 42542)
25755
25756         * aot.c: add ability to handle array types
25757         
25758 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25759
25760         * mini.c: Call the _specific versions of the object allocation
25761         functions if possible.
25762
25763 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25764
25765         * driver.c: call setlocale ().
25766
25767 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25768
25769         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25770         windows build.
25771
25772 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25773
25774         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25775
25776         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25777         wrappers (fix bug 42122)
25778
25779 2003-05-04  Martin Baulig  <martin@ximian.com>
25780
25781         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25782
25783         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25784         s/mini_set_defaults/mono_set_defaults/g.
25785
25786 2003-05-04  Martin Baulig  <martin@ximian.com>
25787
25788         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25789
25790 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25791
25792         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25793         (reported by Don Roberts).
25794
25795 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25796
25797         * mini.c: temporarily work around two bugs for this release.
25798
25799 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25800
25801         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25802         that contains -export-dynamic and it makes using the ld script
25803         useless.
25804         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25805
25806 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25807
25808         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25809         specific cpu.
25810
25811 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25812
25813         * mini.c: make sure leave calls all the needed finally blocks,
25814         even when the target jumps out of multiple exception clauses.
25815
25816 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25817
25818         * ldscript, Makefile.am: add linker script to reduce the number of
25819         exported symbols (should also fix the issues with libwine defining
25820         some of the same symbols in io-layer).
25821
25822 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25823
25824         * driver.c (mini_main): Avoid assertion when no file name is given on 
25825         the command line.
25826
25827 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25828
25829         * driver.c: added --version/-V command line option.
25830         Added the inline optimization in the regression tests.
25831
25832 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25833
25834         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25835         to the type in the method signature (fixes bug#42134).
25836
25837 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25838
25839         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25840
25841 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25842
25843         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25844
25845 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25846
25847         * driver.c: fixed bug #42100.
25848
25849 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25850
25851         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25852
25853 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25854
25855         * mini.c: moved most of the code required to do inlining to its own
25856         function so it can be reused. Inline also ctors if appropriate.
25857
25858 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25859
25860         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25861         the runtime can call mono API functions.
25862
25863 2003-04-27  Martin Baulig  <martin@ximian.com>
25864
25865         * debug-mini.c (mono_debug_init_method): Added
25866         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25867         send a notification to the debugger.
25868
25869         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25870         running in the Mono Debugger, just pass the breakpoint number to
25871         mono_debug_init_method().
25872
25873         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25874
25875 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25876
25877         * mini.c: allow some more unsafe compares.
25878
25879 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25880
25881         * mini-x86.c, Makefile.am: make distcheck works (partially from
25882         a patch by Richard Lee <r.h.lee@attbi.com>).
25883         * regset.c, regset.h: removed, they are unused.
25884
25885 2003-04-25  Dick Porter  <dick@ximian.com>
25886
25887         * driver.c: Usage reports the name as 'mono' not 'mini'
25888         * exceptions-x86.c: Build and run on freebsd
25889
25890 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25891
25892         * Makefile.am: install the program with the 'mono' name and
25893         the library as libmono instead of mini and libmini.
25894
25895 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25896
25897         * driver.c: provide the APIs for the embedding interface of the old jit.
25898
25899 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25900
25901         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25902
25903 2003-04-23  Martin Baulig  <martin@ximian.com>
25904
25905         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25906
25907         * driver.c: Added `--debug' command line argument to enable
25908         debugging support.
25909
25910 2003-04-23  Martin Baulig  <martin@ximian.com>
25911
25912         * debug.[ch]: Removed.  The code is now in
25913         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25914
25915         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25916         last six months.
25917
25918 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25919
25920         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25921
25922 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25923
25924         * mini.c:
25925         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25926         mono_domain_finalize.
25927         (mini_method_compile): use mono_method_profile* if the the option is
25928         enabled.
25929
25930 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25931
25932         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25933         methods with their wrapper.
25934
25935         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25936         methods with their wrapper.
25937
25938         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25939         their wrapper.
25940
25941         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25942         wrapper.
25943
25944         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25945         methods.
25946
25947 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25948
25949         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25950
25951 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25952
25953         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25954         of the mempool. This is slightly faster and uses less memory
25955
25956 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25957
25958         * mini.c: avoid O(n) allocation for variables.
25959
25960 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25961
25962         * mini.c: handle items on the stack after inlining methods.
25963
25964 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25965
25966         * mini.c: make the method->opcode optimization dependent
25967         on MONO_OPT_INSTRINS and do it lazily.
25968
25969 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25970
25971         * driver.c: print overall results at the end of regression run.
25972
25973 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25974
25975         * inssel.brg: don't overwrite symbolic registers.
25976
25977 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25978
25979         * inssel-x86.brg: fix conversion from long to float.
25980
25981 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25982
25983         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25984
25985 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25986
25987         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25988
25989         * driver.c: Added --print-vtable option as in the old JIT.
25990
25991 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25992
25993         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25994
25995 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25996
25997         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25998
25999 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
26000
26001         * mini.c regalloc.c regalloc.h: Fix memory leak.
26002
26003 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
26004
26005         * aot.c (mono_aot_get_method): register all used strings
26006
26007 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
26008
26009         * mini.c: always intern strings references with ldstr at compile time.
26010
26011 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
26012
26013         * Makefile.am: add BUILT_SOURCES.
26014
26015 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
26016
26017         * driver.c: give a better error message when the assembly to execute
26018         doesn't have an entry point.
26019
26020 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
26021
26022         * Makefile.am: added hack for automake
26023
26024         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
26025         correct sematics.
26026
26027         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
26028
26029 22003-04-07  Martin Baulig  <martin@ximian.com>
26030
26031         * Makefile.am: Added Makefile.am.
26032
26033         * debugger-main.c: Removed, this is now in the debugger where it
26034         belongs.
26035
26036         * mini.pc.in: Call this package `mini' for the moment.
26037
26038
26039
26040
26041
26042
26043
26044
26045
26046
26047
26048
26049
26050
26051